我有一个Spring Boot应用程序,其中有一个带有以下两个方法的类。

@Component
public class ClassA {
  @Scheduled(fixedDelay = 900000)
  public void methodA(){
    //do task "A"
  }

 @Scheduled(fixedDelay = 600000)
 public void methodB(){
    //do task "B"
 }

}


根据我的理解,methodA应该每15分钟执行一次,methodB应该每10分钟执行一次。但是,一旦应用程序启动,就会同时调用两个作业。这是正确的行为吗?如果是,那么如何在应用程序启动后立即阻止它们执行,并在methodA之后运行methodB?

最佳答案

作为文档的形式:Scheduled (Spring Framework 5.0.4.RELEASE API)


  fixedDelay:以固定的周期执行带注释的方法
  上一次调用结束与开始之间的毫秒数
  下一个。


你想要的是


  initialDelay:
  第一次延迟之前要延迟的毫秒数
  执行fixedRate()或fixedDelay()任务。

09-26 01:12