Quartz定时任务框架线程池

springboot使用@EnableScheduling注解打开定时任务功能后,默认创建一个固定线程数为1的线程池给定时任务框架调用执行定时任务。

当多个任务同时执行时,会导致多个任务竞争执行线程,当上一个任务执行完毕后,线程才会被释放出来用于其他任务的执行。导致定时任务延时执行。

因此需要创建一个多线程数量的线程池供定时任务使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration
public class ScheduledThreadPoolConfig implements SchedulingConfigurer {

@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}

@Bean(name="taskExecutor",destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(20);
}

}