如果您想要在某個時間點之後,執行某項排定的任務,您可以定義一個TimerTask,再將之排定給Timer,Timer會依指定的時間來執行TimerTask。
舉個實例來說,您想在程式啟動後5秒鐘執行報時,則您可以繼承TimerTask,並重新定義其run()方法。
import java.util.Date;
import java.util.TimerTask;
public class DateTask extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("TimerTask" + new Date());
}
}
在run()方法中,只簡單的顯示run()方法被執行的時間,TimerTask的排程執行要交給Timer物件,例如:
import java.util.Date;
import java.util.Timer;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Timer timer = new Timer();
timer.schedule(new DateTask(), 5000);
System.out.println("Now time is:" + new Date());
try{
Thread.sleep(20000);
}
catch(InterruptedException e)
{
}
timer.cancel();
}
}
如果将timer.schedule(new DateTask(),1000,5000);则意为1秒后,没5秒执行一次run()。
Timer與TimerTask是獨立的兩個物件,當使用Timer的schedule()方法排定TimerTask之後,則必須等執行Timer的 cancel()執行之後,讓TimerTask與Timer脫離關係,TimerTask才可以重新加入其它Timer的排程。