第5章:定時器Timer
在JDK庫中,Timer類主要負責計劃任務的功能,也就是在指定的時間開始執行某一任務,Timer類的主要任務就是設置計劃任務,但封裝任務 的類是TimerTask,執行計劃任務的代碼要放到TimerTask的子類中,因爲TimerTask是一個抽象類。
Timer類的主要方法就是各種重載的schedule方法
schedule(TimerTask task,Date time)在time時刻執行task對象的run()方法,TimerTask類繼承自Thread類,所以是一個線程,執行run()方法也就是啓動線程。當time早於當前時間時,立即執行。
schedule(TimerTask task,Date firstDate, long period)在firstDate的時候執行任務,以後每period的時間重複執行一次任務。
TimerTask的canel()方法,將自身從任務列表中清除。
Timer的cancel()方法,移除任務列表中的全部任務,有的時候這個方法並不會停止執行計劃的任務,因爲這個Timer對象的cancel()方法沒有爭搶到任務隊列的鎖,所以TimerTask中的任務繼續執行。
schedule(TimerTask,long delay)此方法以執行schedule方法當前的時間爲參考時間,在此基礎上延遲指定的毫秒數後執行一次TimerTask任務。
schedule(TimerTask,long delay,long period)此方法以執行schedule方法當前的時間爲參考時間,在此基礎上延遲指定的毫秒數後,再以某一間隔無限次執行TimerTask任務。
scheduleAtFixedRate(TimerTask task,Date firstDate, long period)此方法和schedule方法一樣都會按順序執行,不同的是:
schedule方法,如果執行任務的時間沒有被延遲,那麼下一次任務的執行時間參考的是上一次任務的開始時間來計算的。
scheduleAtFixedRate方法,如果執行任務的時間沒有被延遲,那麼下一次任務的執行時間參考的是上一次任務的結束時間來計算的。
如果被延遲的話,則沒有區別,那麼下一次任務的執行時間參考的都是上一次任務的結束時間來計算的。