开彩票网站做私庄,神马快速排名优化工具,安徽元鼎建设工程 网站,多语言版本网站制作在调试计算任务的时候#xff0c;手动重置任务为初始状态#xff0c;但是并没有重新开始计算#xff0c;检查定时任务代码#xff1a; 从Scheduled(fixedRate 120000)可以看到#xff0c;应该是间隔120秒执行一次该定时任务#xff0c;查看后台日志#xff0c;并没有重…在调试计算任务的时候手动重置任务为初始状态但是并没有重新开始计算检查定时任务代码 从Scheduled(fixedRate 120000)可以看到应该是间隔120秒执行一次该定时任务查看后台日志并没有重新计算重启服务的时候仅在初始阶段执行了一次startRelCalculateTask()后面并没有执行猜测是fixedRate的原因这里换上cron表达式 Scheduled(cron 0/10 * * * * ?)结果更出乎意料了后台日志根本就没打印也就是cron根本就没执行在另外写一个demo测试 奇怪的是都有在执行后来经过排查是定时任务线程的原因Scheduled定时任务默认的线程数只有一个进行定时任务调度时会同步的去调度一个执行完成后再执行另一个项目中定时任务非常多所以没能异步执行解决方法是添加一个配置类设置TaskScheduler线程数为多个这样再执行时就会异步执行了各个定时任务间互不影响。
Configuration
public class ScheduledPool {Beanpublic TaskScheduler taskScheduler() {ThreadPoolTaskScheduler taskScheduler new ThreadPoolTaskScheduler();// 设置定时任务线程数量taskScheduler.setPoolSize(50);return taskScheduler;}
}奇怪的是不知道是不是cron与项目的配置什么冲突了在不配线程池的情况下cron注解的任务是无法执行的配置了以后是可以识别的 参考链接解决SpringBoot中的Scheduled单线程执行问题