2

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

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

1 回答 1

2

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

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

Spring 文档中查看更多信息。

于 2016-01-29T21:28:18.227 回答