Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何阻止Spring@Scheduled排队作业_Java_Spring_Spring Scheduled - Fatal编程技术网

Java 如何阻止Spring@Scheduled排队作业

Java 如何阻止Spring@Scheduled排队作业,java,spring,spring-scheduled,Java,Spring,Spring Scheduled,我使用@Scheduled注释每两分钟运行一次代码。然而,我们的工作往往会持续更长的时间。据我所知,@Scheduled注释将新作业排队,并在第一个作业完成后立即运行它们。我不希望这种情况发生。我希望只有一个正在运行的作业实例,没有排队的实例。我该怎么做 @Scheduled(cron = "0 */2 * * * ?") public void twoMinMethod() { // code here } 如果您不需要精确地在一分钟内运行作业,您可能希望切换到其他非crontab语

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

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

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

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

有关详细信息,请参阅。

这取决于具体情况。如果您有一个具有多个线程的
TaskExecutor
,并且有空闲线程,那么您有多个并发执行。在池用完之前,根据所选策略,作业将排队、丢弃,否则您将收到异常。所以这要看情况而定。如果你想要一个单一的实例,你需要使用一个调度器,比如quartz,它提供了对这一点的支持。