版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sz85850597/article/details/81116437
springboot使用@EnableScheduling
注解打开定时任务功能后,默认创建一个固定线程数为1的线程池给定时任务框架调用执行定时任务。
当多个任务同时执行时,会导致多个任务竞争执行线程,当上一个任务执行完毕后,线程才会被释放出来用于其他任务的执行。导致定时任务延时执行。
因此需要创建一个多线程数量的线程池供定时任务使用。
@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);
}
}