在使用springboot定时任务的时候通常情况下步骤是
1、在启动类增加@EnableScheduling
2、在定时任务类上增加@Component
3、在方法上增加@Scheduled(fixedRate = 5000),这里给个默认的定时时间为5秒
其实这个步骤是没有问题的,在执行单个定时任务的时候也没有什么问题,但是如果同一时间段内执行多个定时任务,会造成线程阻塞,就是一定会等某一个定时任务执行完了之后才会执行下一个定时任务。
在此记录一下解决方案:
@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));
}
}
需要实现SchedulingConfigurer并重写setScheduler,将线程池的值设置的大一点,因为默认是单线程