为什么 Spring @schedule 注释不是在每天的确切时间 运行?
Why does Spring @schedule annotation not run at exact times each day?
我有一个使用 spring 时间表注释的方法,如下所示:
@Scheduled(cron = "0 0 0 * * *", zone = "Europe/Amsterdam")
.
我注意到此作业的运行时间有时会有所不同。例如日志中的片段:
2021-09-18T23:09:46,479 INFO [ScheduledJob]
2021-09-19T22:00:00,005 INFO [ScheduledJob]
2021-09-20T23:07:40,760 INFO [ScheduledJob]
如果执行时间相差几秒我能理解,但有时最多相差一个小时
为什么 @scheduled
注释不会在一致的时间触发?
尝试增加可用线程数,如下所示:
spring.task.scheduling.pool.size = 5
或通过 JavaConfig:
public class ThreadPoolTaskSchedulerConfig {
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("Whatever name you want to give it for debugging purposes");
return threadPoolTaskScheduler;
}
}
我用了 5 个,但您可能认为这还不够,也许可以尝试更多。
我有一个使用 spring 时间表注释的方法,如下所示:
@Scheduled(cron = "0 0 0 * * *", zone = "Europe/Amsterdam")
.
我注意到此作业的运行时间有时会有所不同。例如日志中的片段:
2021-09-18T23:09:46,479 INFO [ScheduledJob]
2021-09-19T22:00:00,005 INFO [ScheduledJob]
2021-09-20T23:07:40,760 INFO [ScheduledJob]
如果执行时间相差几秒我能理解,但有时最多相差一个小时
为什么 @scheduled
注释不会在一致的时间触发?
尝试增加可用线程数,如下所示:
spring.task.scheduling.pool.size = 5
或通过 JavaConfig:
public class ThreadPoolTaskSchedulerConfig {
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("Whatever name you want to give it for debugging purposes");
return threadPoolTaskScheduler;
}
}
我用了 5 个,但您可能认为这还不够,也许可以尝试更多。