心跳包定時器實現(Timer和TimerTask詳解)
一、原理
JDK中,定時器任務的執行需要兩個基本的類:java.util.Timer;
java.util.TimerTask;
要執行一個定時任務,最基本的步驟如下:
1、建立一個要執行的任務TimerTask。
2、建立一個Timer例項,通過Timer提供的schedule()方法,將 TimerTask加入到定時器Timer中,同時設定執行的規則即可。
當程式執行了Timer初始化程式碼後,Timer定時任務就會按照設定去執行。
Timer中的schedule()方法是有多種過載格式的,以適應不同的情況。該方法的格式如下:
void schedule(TimerTask task, Date time)
安排在指定的時間執行指定的任務。
void schedule(TimerTask task, Date firstTime, long period)
安排指定的任務在指定的時間開始進行重複的固定延遲執行。
void schedule(TimerTask task, long delay)
安排在指定延遲後執行指定的任務。
void schedule(TimerTask task, long delay, long period)
安排指定的任務從指定的延遲後開始進行重複的固定延遲執行。
Timer是執行緒安全的,此類可擴充套件到大量同時安排的任務(存在數千個都沒有問題)。其所有構造方法都啟動計時器執行緒。可以呼叫cancel() 終止此計時器,丟棄所有當前已安排的任務。purge()從此計時器的任務佇列中移除所有已取消的任務。此類不提供實時保證:它使用 Object.wait(long) 方法來安排任務。
TimerTask是一個抽象類,由 Timer 安排為一次執行或重複執行的任務。它有一個抽象方法run()----計時器任務要執行的操作。因此,每個具體的任務類都必須繼承TimerTask類,並且重寫run()方法。另外它還有兩個非抽象的方法:
boolean cancel()
取消此計時器任務。
long scheduledExecutionTime()
返回此任務最近實際 執行的安排 執行時間。
二、例子
下面用Timer實現一個簡單例子:
?
12345678910111213141516171819202122232425 | <span style= "font-family:FangSong_GB2312;font-size:18px;" ><span style= "font-size:24px;"
|