程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 定時器(Timer,TimerTask)詳解及實例代碼

Java 定時器(Timer,TimerTask)詳解及實例代碼

編輯:關於JAVA

Java 定時器(Timer,TimerTask)詳解及實例代碼。本站提示廣大學習愛好者:(Java 定時器(Timer,TimerTask)詳解及實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Java 定時器(Timer,TimerTask)詳解及實例代碼正文


 Java 定時器

在JAVA中完成定時器功用要用的二個類是Timer,TimerTask

Timer類是用來執行義務的類,它承受一個TimerTask做參數

Timer有兩種執行義務的形式,最常用的是schedule,它可以以兩種方式執行義務:1:在某個時間(Data),2:在某個固定的時間之後(int delay).這兩種方式都可以指定義務執行的頻率,本文有二個例子,一個是復雜的一個是用了外部類

1.復雜實例

  先寫一個類

public class TimeTest {
public static void main(String[] args) {
  
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}

然後再寫個類

public class MyTask extends TimerTask{

  @Override
  public void run() {
 System.out.println("開端運轉");    
  }
}

這樣就可以完成一個復雜的定時器,但是還有一種辦法就是把這二個類寫入到一個類中,也就是外部類了

2.外部類

public class SerchRun {

  protected static void startRun(){
    Timer timer = new Timer();
     TimerTask task =new TimerTask(){
       public void run(){
         System.out.println("開端運轉"); //在這寫你要調用的辦法
       }
     };
   timer.scheduleAtFixedRate(task, new Date(),2000);//以後時間開端起動 每次距離2秒再啟動
   // timer.scheduleAtFixedRate(task, 1000,2000); // 1秒後啟動 每次距離2秒再啟動         
   }
  
  public static void main(String[] args) {
   SerchRun.startRun();
  }
}

 schedule和scheduleAtFixedRate的區別在於,假如指定開端執行的時間在以後零碎運轉時間之前,scheduleAtFixedRate會把曾經過來的時間也作為周期執行,而schedule不會把過來的時間算上。

比方:

SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date d1 = fTime.parse("2005/12/30 14:10:00");
 
 t.scheduleAtFixedRate(new TimerTask(){
  public void run()
  {
    System.out.println("this is task you do6");
  }
 },d1,3*60*1000);

距離時間是3分鐘,指定開端時間是2005/12/30 14:10:00,假如我在14:17:00分執行這個順序,那麼會立即打印3次

this is task you do6   //14:10
this is task you do6   //14:13
this is task you do6   //14:16

並且留意,下一次執行是在14:19 而不是 14:20。就是說是從指定的開端時間開端計時,而不是從執行時間開端計時。

但是下面假如用schedule辦法,距離時間是3分鐘,指定開端時間是2005/12/30 14:10:00,那麼在14:17:00分執行這個順序,則立刻執行順序一次。並且下一次的執行時間是 14:20,而不是從14:10開端算的周期(14:19)。

感激閱讀,希望能協助到大家,謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved