java - 如何阻止 Spring @Scheduled 排队作业

标签 java spring spring-scheduled

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

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

最佳答案

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

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

查看更多信息 Spring Documentation .

关于java - 如何阻止 Spring @Scheduled 排队作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35094091/

相关文章:

spring - 如何为 Spring Batch 作业定义模板?

cron - spring 计划任务每​​秒运行一次,使用 cron(0 0/10 * * * ? )

java - XML 文件中的字符串和\n

java - hibernate 一个线程,直到另一个线程参加了一个事件

java - 如何点击工具栏中的导航按钮?

java - Elasticsearch 未关闭的客户端。 Tomcat 关闭后的 Activity 线程。内存使用影响?

java - applicationContext.xml 正在从 src/main/resources 复制到/WEB-INF/classes

java - 如何使用 java 或 jdbcTemplate 从 Postgres 获取二维数组

java - 如何立即停止Camel Context?

java - Spring @cacheable 如何在凌晨 12 点刷新缓存?