Java 有没有办法让Spring@Async方法延迟执行直到条件为真?

Java 有没有办法让Spring@Async方法延迟执行直到条件为真?,java,spring,multithreading,spring-boot,asynchronous,Java,Spring,Multithreading,Spring Boot,Asynchronous,我使用@Async方法调用了一些任务,这些任务只应在给定条件为true时运行。如果条件为非真,则应保留任务以供以后运行。基本上,我希望做到以下几点: @Async public void doTask() { if (checkCondition()) { // task logic } else { // put this task in back of queue } } 实现这一效果的最佳方法是什么?您可以使用任何消息队列,并在需要时使用使用者。使用C

我使用@Async方法调用了一些任务,这些任务只应在给定条件为true时运行。如果条件为非真,则应保留任务以供以后运行。基本上,我希望做到以下几点:

@Async
public void doTask() {
  if (checkCondition()) {
      // task logic
  }
  else {
    // put this task in back of queue
  }
}

实现这一效果的最佳方法是什么?

您可以使用任何消息队列,并在需要时使用使用者。

使用CompletableFuture,当条件为真时解决问题

何时知道检查条件?编译还是运行时?在运行时;这取决于调用外部API。