JAVA的三種任務調度,Timmer,ScheduledExecutorService和Quartz

1. Timmer

JDK自帶的任務調度工具,只需Timmer和TimmerTask兩個類,就可以實現調度.

TimmerTask實現了Runnable接口,只需繼承TimerTask並實現其中run方法,即可交於其自動調度

其調度方法是schedule(TimerTask task,long delay,long period)...

優點, JDK本身自帶,無需第三方依賴,只需實現TimerTask

缺點, Timer中素有的任務都是一個TaskThread線程來調度執行,若前一個任務發生延遲會影響任務執行

2,ScheduledExecutorService

補充了Timmer缺陷,可以實現線程池的調度.多數情況使用此方法

scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimerUtil unit);

scheduleAtFixedRate方法是基於初始延遲(initialDelay)的,後固定間隔(period)進行任務調度,

scheduleWithFixedDelay(Runnable command,long initialDelay, long delay, TimeUnit unit);

scheduleWithFixedDelay方法是基於上次任務完成後固定的延遲時間來進行調度.

3,Quartz

在Spring框架中使用Quartz工具實現任務調度的方式

需要先定義任務配置,定義JobDetailFactoryBean,配置具體任務方法.然後定義TriggerFactoryBean,

配置具體任務方法的執行頻率,

秒 分 時 日 月 年 --> ps: 0/1 * * * * ? 每秒執行一次 0 0/5 * * * ? 五分鐘執行一次

最後定義SchedulerFactoryBean 註冊需要執行的任務

當不需要多個線程同時去執行同一個任務時候 在JobDetailFactoryBean中配置

<property name="concurrent" value="false" />


Quartz和ScheduledThreadPoolExecutor一樣,都是基於線程池調度的.

Quartz默認使用SimpleThreadPool來作爲線程池

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章