为什么 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 个,但您可能认为这还不够,也许可以尝试更多。