我有一个小型独立应用程序,可将调度程序配置为正常终止。使用以下配置:
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setWaitForTasksToCompleteOnShutdown(true);
scheduler.setAwaitTerminationSeconds(60);
return scheduler;
}
我可以让它优雅地终止调度程序,但前提是我没有任何 @Scheduled(cron = ) 任务。一旦我拥有其中之一,无论调度程序会被卡住直到超时。我已经尝试过使用执行器对其进行配置并手动关闭/等待,效果完全相同。
这些 cron 作业甚至没有运行。例如,它们被设置为在夜间的固定时间运行。
春季版:4.2.8.RELEASE
当超时结束时会发生这种情况:
2017.07.28 01:44:56 [Thread-3] WARN Timed out while waiting for executor 'taskScheduler' to terminate
有什么想法吗?