Timer & TimerTask

來源:互聯網
上載者:User
--------------------------------------------------------------
1. Timer是一個安全執行緒的單線程的任務調度工具,對於任務的調度有如下幾種調度方式
   -------------------------------------
   a. 目前時間+時延
   b. 目前時間+時延+任務執行間隔
   c. 目前時間+時延+任務執行循環
   d. 指定時間
   e. 指定時間+時延
   f. 指定時間+時延+任務執行間隔
   g. 指定時間+時延+任務執行循環
   -------------------------------------
   任務執行間隔和任務執行循環區別在於,對於任務執行間隔是指上一次執行開始到下一次執行
   之間的時間間隔,而任務執行循環是指從(指定時間+時延)或者(目前時間+時延)確定的時間點
   每隔周期長時間執行一次,看起來好像是麼有什麼區別,其實之間的區別就在於,對於
   a. 對於Timer而言,TimerTask執行的時間是不能很準確的確定的,它跟其前面的任務執行的時間
   是有關係的,例如其前面的任務執行了個死迴圈,那它是永久沒有執行機會的
   b. 那麼任務執行間隔類型任務期望執行的時間是不確定的,其具體的執行時間根本就不可能確定
   c. 那麼任務執行循環類型任務期望執行的時間是確定的,而其具體的執行時間根本就不可能確定
   d. 有時間周期的任務是周期執行,而其他的任務只執行一次
   e. TimerTask是可以被取消的,只要設定其自己的狀態屬性就可以了
--------------------------------------------------------------
2. 程式邏輯分析
   a. 資料結構
      1. Timer主要有兩個資料結構,一個是使用最小堆資料結構實現的隊列,另一個是調度任務執行的線程
      2. 線程執行邏輯是一個死迴圈
         a. 如果任務隊列queue目前沒有任務,則會進入休眠等待
         b. 當線程被喚醒有兩種可能,一是有任務加入,一是Timer啟動了關閉,如果是Timer啟動了關閉則退出死迴圈
         c. 取出queue.top,處於TOP的任務是第一個需要執行的任務,如果任務已經被CANCEL則回到a
         d. 取系統目前時間,如果top期待的執行時間是小於等於目前時間則任務可以執行
         在執行前有如下操作:如果不是週期性任務則從任務隊列中取出,如果是週期性任務
         又分任務執行間隔和任務執行循環,對於任務執行間隔將任務期望執行時間在
         目前時間基礎上加上周期,對於任務執行循環則是在任務原本期待時間加上周期
         調整任務隊列...
         如果top期待的執行時間是大於目前時間則線程休眠其差值
         e. 如果任務可以執行,則執行,注意麼有cache運行時異常,所以注意傳進來的任務異常
         要捕捉好,否則整個Timer就報廢了...
         f. 這個線程是一個死迴圈,其退出死迴圈的條件就是2.a.2.b
   b. 關閉Timer主要操作是將任務隊列queue抽空,等任務調度線程執行到2.a.2.b時退出
--------------------------------------------------------------
1. 在使用Timer時注意TimerTask裡面函數的異常捕捉,出現異常危害很大
2. Timer不能保證TimerTask按照指定的時間執行...
3. 調用Timer關閉函數和使線程退出是一樣的,只能然其運行到某個標誌退出處
--------------------------------------------------------------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.