摘要: 在JDK 5.0之前,java.util.Timer/TimerTask是唯一的內置任務調度方法,而且在很長一段時間里很熱衷于使用這種方式進行周期性任務調度。
首先研究下Timer/TimerTask的特性(至于javax.swing.Timer就不再研究了)。
上面三段代碼反映了Timer/TimerTask的以下特性:
Timer對任務的調度是基于絕對時間的。
所有的TimerTask只有一個線程TimerThread來執行,因此同一時刻只有一個TimerTask在執行。
任何一個TimerTask的執行異常都會導致Timer終止所有任務。
由于基于絕對時間并且是單線程執行,因此在多個任務調度時,長時間執行的任務被執行后有可能導致短時間任務快速在短時間內被執行多次或者干脆丟棄多個任務。
閱讀全文