春天的@Scheduled(fixedDelay = ...)在午夜停止

时间:2018-11-15 01:10:32

标签: java spring spring-boot spring-scheduled

我有一个Spring Boot应用程序,它使用带有固定延迟的@Scheduled注释。注释在具有不同延迟的不同类别中使用。但是,每天午夜所有计划的任务都会停止运行。

有人知道为什么会这样吗?我在网上找不到任何解释。

(我使用的是Spring Boot的2.0.2.RELEASE版本和Spring Core的5.0.6.RELEASE版本。)

谢谢!

3 个答案:

答案 0 :(得分:0)

我不确定停止跑步是什么意思。

但是您需要做的第一项工作是在不同线程上启动计划并将其放入队列中。

如果停止意味着暂停一段时间,那么您将创建一个新的日程表,使其他日程表在午夜睡眠一些时间。也许新的日程表应该在线程处于睡眠状态时已启动,并且防止发生的方法是确保同一时间只能将一个日程表(我的意思是相同的日程表)放在队列中。

如果您只是想在午夜杀死所有其他时间表,则只需要启动午夜时间表并杀死其他时间表即可。

为我的英语不好对不起,希望这对您有所帮助。

答案 1 :(得分:0)

@Scheduled(fixedDelay = 1000)
 void scheduleFixedDelayTask() {
   System.out.println(
  "Fixed delay task - " + System.currentTimeMillis() / 
 1000);
  }

在这种情况下,上一次执行的结束与下一次执行的开始之间的持续时间是固定的。任务总是等到上一个任务完成。

在必须先完成前一次执行然后再次运行时,应使用此选项。

因此,请保持延迟以使之前的执行完成。

希望有帮助。

答案 2 :(得分:0)

感谢所有回答。

事实证明,这与Spring无关。看来任务已停止,因为日志已停止。真正发生的是,我们在日志结尾添加尾码的脚本不够智能,无法处理在午夜滚动的日志文件(脸掌)。