1. 程式人生 > >Timer和時間調度

Timer和時間調度

object oop row 任務 timer oid con 方式 系統時間

  Timer作為JDK提供的util工具,不太適合作為周期調度任務,只適合簡單的定時操作(按照一定時間頻率出發任務),在java的領域解決方案中,Quartz無疑是翹楚。

  Timer的調度方法有:

public void schedule(TimerTask task, long delay) {
if (delay < 0)
throw new IllegalArgumentException("Negative delay.");
sched(task, System.currentTimeMillis()+delay, 0);
}  
public void schedule(TimerTask task, Date time) {
sched(task, time.getTime(), 0);
}
  
  等一些主要以時間間隔為主的任務,另外大家不要誤會第二個構造方法有什麽特別,其實內部也是通過計算出和現在的間隔毫秒數為主的調度,用到的原理也很簡單,維護一個queue的實現了TimerTask的任務隊列,然後通過輪詢mainloop方法,不斷執行其中的任務,而執行方式熟悉並發的同學都知道,用的是Object的wait(long millionseconds)方法。

  因此結論:不要試圖更改系統時間接近Date time這個時間使得任務運行。

Timer和時間調度