欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > @Scheduled注解定时任务未按时执行问题记录

@Scheduled注解定时任务未按时执行问题记录

2025/11/8 9:20:44 来源:https://blog.csdn.net/Theflowerofac/article/details/140872502  浏览:    关键词:@Scheduled注解定时任务未按时执行问题记录

文章目录

  • 问题
  • 原因
  • 解决方案

问题

在一个项目中多处使用了@Scheduled注解,有些任务是1分钟执行一次,有些任务是每天凌晨0点执行一次。但是发现本该在凌晨0点执行的任务在0点并没有执行,而是在凌晨1点多才执行,而且每次执行的时间还不一样。

原因

经排查原因是因为每分钟执行一次的任务,在1分钟内执行不完,且@Scheduled注解底层虽然是使用线程池,但是线程池中默认只有一个线程!在0点的时候前面还有很多1分钟执行一次的任务没执行完,导致在0点执行的任务阻塞,直到前面阻塞的任务都执行完,1点多才执行0点的任务。@Scheduled相关源码:

在这里插入图片描述

解决方案

可以在SpringBoot ymal文件中配置。也可以向下边一样注入配置类即可

@Configuration
public class SchedulerConfig {@Beanpublic ThreadPoolTaskScheduler taskScheduler() {ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();taskScheduler.setThreadNamePrefix("MyTask-Thread-");taskScheduler.setPoolSize(20);taskScheduler.setWaitForTasksToCompleteOnShutdown(true);taskScheduler.initialize();return taskScheduler;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词