timer和quartz都可以實現定時任務。
timer的執行是單線程執行的,quartz執行可以是多線程實現。
首先了解Timer:
timer:有且僅有一個後臺線程對多個業務線程進行定時定頻率的調度。
timer的構建(timer是通過定時的條用timerTask來實現定時任務的調用):
timer可以理解爲某個後臺執行的線程,timerTask可以理解爲業務線程。
timer的內部構造:
timerTask的運用實例(繼承了TimerTask後去實現和堆內的run方法):
執行程序:
Timer的時間調度函數:
schedule的是四種用法。
第一:
意思就是超過timer線程一直處於等待狀態。
實例:
main:
第二種:
第三種:
注意的是這裏且僅執行一次。
第四種:
scheduleAtFixedRate的兩種用法。
第一種:
執行:
第二種:
其他重要函數:
TimerTask的cancel(),scheduledExecutionTime()的用法和Timer的cancel()he purge()函數的用法。
首先:cancel()的作用是取消TimerTask裏的任務。
實例(答應五次就關閉定時任務的執行):
scheduledExecutionTime():返回此任務最近實際執行的已安排的時間。
實例:
就是返回最近執行的實際時間。
Timer下面的cancel()函數:終止此計時器,丟棄所有當前已安排的任務。
purge:從此計時器的任務隊列中移除所有已取消的任務,並返回取消任務對的個數。
schedule與scheduleAtFixedRate的區別:
第一種:
實例:
第二種:
實例:
注意:延遲後爲了趕上本來的執行次數會在同一時間點多次執行。
第三種:
實例:
實例:
timer的缺陷:
第二種: