定時器 Timer

定時器 Timer

[toc]

定時器 Timer 的使用

Timer 類主要負責計劃任務的功能,也就是在指定時間開始執(zhí)行某一個任務

主要作用:設置計劃任務,但封裝任務的類卻是 TimerTask 類。

常用方法

schedule()

  • schedule(TimerTask task,Date time)在指定的日期執(zhí)行一次某一任務
  • schedule(TimerTask task,Date firstTime,long period):在指定的日期之后按指定的間隔周期,無限循環(huán)地執(zhí)行某一任務。
  • schedule(TimerTask task,long delay)
    :以執(zhí)行該方法當前的時間為基礎時間,延遲指定毫秒數(shù)后執(zhí)行一次任務
  • schedule(TimerTask task,long delay,long period):以執(zhí)行該方法當前的時間為基礎時間,延遲指定毫秒數(shù)后執(zhí)行一次任務,再以某一時間間隔無限次地執(zhí)行某一任務。

Timer 中允許有多個 TimerTask 任務:以隊列的方式一個個被順序性的執(zhí)行。

TimerTask.cancel() & Timer.cancel 的區(qū)別:

  • TimerTask 的 cancel():將自身從任務隊列中進行清除
  • Timer 的 cancel():將任務隊列中全部的任務進行清空(有時不一定會停止任務)

scheduleAtFixedRate()

與 schedule() 方法基本一致,主要區(qū)別:追趕性。

  • 不延時的情況下,兩者一致。
  • 如果出現(xiàn)延時,則 scheduleAtFixedRate() 會以上一次任務結束的時間來作為參考計算,而 schedule()立即執(zhí)行。

注意

推薦使用 ScheduledExecutorService。

多線程并行處理定時任務時,Timer 運行多個 TimeTask 時,只要其中之一沒有捕獲拋出的異常,其它任務便會自動終止運行,使用 ScheduledExecutorService 則沒有這個問題。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容