定時執行相關類,包括java.util.Timer,以及TimerTask、還有內部類TaskQueue、TimerThread等java
###java.util.TimerTaskapi
Timer執行的調度單元。數組
#####經常使用的屬性多線程
nextExecutionTime
Task下一次執行時間oop
period
執行間隔時間。有負值、正值、0三種。0表示這個Task只執行一次、負值表示,計算下次執行時間時,用當前任務執行的當前時間+間隔時候計算。正值表示,第一次時,用起始時間+間隔時間獲得下次執行時間,而後嚴格用執行時間+間隔時間,因此爲負值的時候爲「補償」當前時間到初始時間以前全部的過期任務。線程
三、state
以及常量VIRGIN
、SCHEDULED
、EXECUTED
、CANCELLED
Task的狀態。調試
###java.util.Timercode
Timer調度執行類排序
fixUp
,fixdown
重排序。還有一個heapify
重排序方法。newTasksMayBeScheduled
boolean字段,受queue監視器保護,代表Timer是否還有活的引用。繼承
queue
全部執行任務,爲TaskQueue
實例。
mainLoop
循環執行全部任務。其中有關於period
三種狀況的不一樣處理方法。
queue
任務隊列,是一個最小堆隊列。
thread
執行任務線程,TimerThread實例類。
nextSerialNumber
定時器序列號生成器
schedule
與 scheduleAtFixedRate
重載方法sched
私有方法,根據傳入的參數的不一樣,決定period
的值。由period
的值決定Task的規則類型。計時器主要用的類有兩個,一個是調度執行器Timer,一個是任務類TimerTask。
TimerTask繼承了Runnable接口,是一個多線程類,根據period
值分爲:
Timer類中,有兩個內部類,一個是任務隊列類。內部維護一個最小堆。一個是調度線程類TimerThread,無限循環執行任務隊列中的任務。
Timer主類中,持有一個任務隊列與調試線程類。主要有一系列重載的調試方法,除了以前的執行間隔機制的不一樣,還有初始時間的不一樣,根據傳入的類型,能夠是一個指定時間點(Date),也能夠是當前時間日後延遲指定時間段(Long)。