我使用@Scheduled批注每两分钟运行一次代码。但是,我们的工作往往会持续更长的时间。据我了解,@ Scheduled批注将新作业排队,并在第一个作业完成后立即运行它们。我不希望这种情况发生。我希望只有1个正在运行的作业实例,而没有排队的实例。我怎样才能做到这一点?

@Scheduled(cron = "0 */2 * * * ?")
public void twoMinMethod() {
    // code here
}

最佳答案

如果您不需要精确地运行作业,则可能需要切换到其他非crontab语法,这将允许这种操作。下面的示例将执行该方法,等待完成后等待两分钟,然后再次执行。

@Scheduled(fixedDelay=120000)
public void twoMinMethod() { ... }


Spring Documentation上查看更多信息。

10-08 13:08