1. 程式人生 > >詳解java定時任務 (r)

詳解java定時任務 (r)

在前面也提過scheduleAtFixedRate與schedule方法的側重點不同,schedule方法側重儲存間隔時間的穩定,而scheduleAtFixedRate方法更加側重於保持執行頻率的穩定。為什麼這麼說,原因如下。在schedule方法中會因為前一個任務的延遲而導致其後面的定時任務延時,而scheduleAtFixedRate方法則不會,如果第n個task執行時間過長導致systemCurrentTime>= scheduledExecutionTime(n+1),則不會做任何等待他會立即執行第n+1個task,所以scheduleAtFixedRate方法執行時間的計算方法不同於schedule,而是scheduledExecutionTime(n)=firstExecuteTime +n*periodTime,該計算方法永遠保持不變。所以scheduleAtFixedRate更加側重於保持執行頻率的穩定。(
執行任務時間小於時間間隔的話兩者是一樣的,如果執行任務時間大於間隔時間,schedlue就相應延遲,但是scheduleAtFixedRate還是保持執行任務的時間間隔還是不變的,scheduledExecutionTime()方法表示實際的任務的執行時間