Posted on 2009-06-02 21:57
啥都寫點(diǎn) 閱讀(262)
評論(0) 編輯 收藏 所屬分類:
J2SE
關(guān)鍵技術(shù):
- 可以用一個(gè)線程來實(shí)現(xiàn),當(dāng)線程處理完任務(wù)后,進(jìn)入了Sleep狀態(tài),等待一段時(shí)間后,再執(zhí)行任務(wù)。
- 類java.util.Timer和java.util.TimerTask可以實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)。Timer的schedule系列方法能夠在指定的時(shí)間執(zhí)行TimerTask類型的任務(wù)。
package book.thread;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 定時(shí)器
* 在應(yīng)用開發(fā)中,經(jīng)常需要一些周期性的操作,比如每5分鐘檢查一下新郵件等。
* 對于這樣的操作最方便、高效的實(shí)現(xiàn)方式就是使用java.util.Timer工具類。
*/
public class UsingTimer {
/**
* 我的任務(wù)類,繼承TimerTask
* TimerTask是一個(gè)抽象類,必須實(shí)現(xiàn)它的抽象方法run()
*/
static class MyTask extends TimerTask{
private int taskID = 0;
public MyTask(int id){
this.taskID = id;
}
public void run(){
System.out.println("run MyTask-" + this.taskID
+ " at time: " + System.currentTimeMillis());
}
}
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask myTask1 = new MyTask(1);
//200ms后執(zhí)行myTask1
timer.schedule(myTask1, 200);
//300ms后執(zhí)行myTask2,并且以后每個(gè)500ms再執(zhí)行一次myTask2
TimerTask myTask2 = new MyTask(2);
timer.schedule(myTask2, 300, 500);
//在指定時(shí)間(一秒鐘之后)執(zhí)行myTask3
TimerTask myTask3 = new MyTask(3);
Date date = new Date(System.currentTimeMillis() + 1000);
timer.schedule(myTask3, date);
try {
//等待5秒鐘
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//終止定時(shí)器,并取消定時(shí)器中的任務(wù)
timer.cancel();
System.out.println("timer canceled!");
}
}
--
學(xué)海無涯