Java 多線程編程核心技術5—定時器Timer

  1. Timer類的主要做用就是設置計劃任務,但封裝任務的類倒是TimerTask類,執行計劃任務的代碼要放入TimerTask的子類中,由於TimerTask是一個抽象類。
  2. 建立1個Timer就是啓動一個新的線程,那麼這個新啓動的線程並非守護線程,一直在運行。
  3. 若是執行任務的時間早於當前時間,則當即執行task任務。
  4. TimerTask是以隊列的方式一個一個被順序性地執行,因此執行的時間有可能和預期的時間不一致,由於的任務有可能消耗的時間比較長,則後面的任務運行的時間也被延後。
  5. 在使用一個Timer狀況下,Task是放入隊列的,得一個一個運行。
  6. TimerTask類中的cancel()方法的做用是將自身從任務隊列中進行清除。其餘任務不受影響。
  7. Timer類中的cancel()方法做用是將任務隊列中所有的任務進行清空。
  8. 所有任務都被清除,而且進程被銷燬。
  9. Timer類中的cancel()方法有時並不必定會中止計劃任務,而是正常執行。緣由是Timer類中的cancel()方法有時並無搶到queue鎖,則讓TimerTask類中的任務正常執行。
  10. 方法schedule和方法scheduleAtFixedRate都會按順序執行,因此不要考慮非線程安全的狀況,主要區別在於有沒有追趕特性。
相關文章
相關標籤/搜索