Springboot配置Schedule定时任务线程池
Springboot默认的定时任务是单线程的,当我们的定时任务较多并且耗时较长时,为了提升效率我们可以给定时任务配置一个线程池,以多线程的方式执行定时任务。
代码清单:
ScheduleConfig.java
//启用自动化配置
@Configuration
//启用定时任务
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
@Value("${thread.pool.corePoolSize:10}")
private int corePoolSize;
@Value("${thread.pool.maxPoolSize:500}")
private int maxPoolSize;
@Value("${thread.pool.keepAliveSeconds:300}")
private int keepAliveSeconds;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.setScheduler(getExecutor(corePoolSize,maxPoolSize,keepAliveSeconds));
}
/**
* 获取线程池
*
* @param corePoolSize 最小线程数
* @param maxPoolSize 最大线程数
* @param keepAliveSeconds 允许空闲时间(秒)
* @return 返回队列
*/
protected ScheduledExecuto