@Scheduler定时任务执行时间问题

以下配置可以完美解决同一时间触发定时任务,在实际执行中存在时间差的问题:
比如:
@Scheduled(cron = "0 0/10 * * * ?")
public void task1(){
   log.info("task1 started"); ........ } @Scheduled(cron
= "0 0/10 * * * ?") public void task2(){
   log.info("task2 started"); ........ }

如果task1执行任务时间较长的话,会发现“task2 started”的日志输出时间不是完全在每个10分钟的时间点,会出现延后的情况
是因为定时任务会根据任务执行线程池来执行,Spring中默认配置的线程池数量是1,所以会出现上面的情况

通过在项目中增加以下配置,增加任务执行线程池数量来提升并发执行能力:
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(50);
return taskScheduler;
}
posted @ 2022-04-13 23:36  Commissar-Xia  阅读(541)  评论(0编辑  收藏  举报