企業級定時調度常用的有3種:
JDK自帶的併發框架
開源的Quartz調度框架
基於前面兩種進行封裝的SPRING定時調度框架
調度方式:
- JDK自帶的併發框架
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor( );
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
}
}, 10, 2, TimeUnit.MILLISECONDS);
開源的Quartz調度框架:
scheduler.scheduleJob(jobDetail, trigger);
SPRING定時調度框架:
SPRING對前面兩種進行了簡化封裝,尤其是第一種;
對JDK併發框架的封裝,對源碼感興趣的可以查看ScheduledAnnotationBeanPostProcessor和ScheduledTaskRegistrar的源碼
配置舉例:
<task:scheduled-tasks>
<task:scheduled ref="logImpTask" method="impActionLogToDb"
fixed-delay="5000" />
</task:scheduled-tasks>
ref含義:spring容器的beanId
method含義:調用的方法
fixed-delay:每隔多少時間調用(單位秒)
cron :cron表達式
對QUARTZ的封裝,對源碼感興趣的可以查看SchedulerFactoryBean源碼;
通過@Autowired Scheduler scheduler;
引用Scheduler後,調用quartz的相關方法,可以根據實際需要動態的增刪調度。
除此之外還有分佈調度,充分利用多節點優勢進行任務計算,如:噹噹網的elasticjob