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來作爲線程池