首页 > 解决方案 > Spring Boot @Async 等待所有线程完成

问题描述

我必须与不同的服务器建立多个连接并运行一些命令,我​​正在使用 for 来调用 Async 方法,但我不知道所有线程何时完成以发送其他进程。

标签: springasynchronous

解决方案


您可以@Async使用CompletableFuture. 将其返回,以便您可以利用 提供的功能CompletableFuture来实现您的目的。

例如 :

@Service
public class FooService {
   
   @Async
   public CompletableFuture<String> process(){
       String result = processing();
       return CompletableFuture.completedFuture(result);
   }

}

和客户代码:

CompletableFuture<String> r1 =   fooService.process();
CompletableFuture<String> r2 =   fooService.process();
CompletableFuture<String> r3 =   fooService.process();
  
CompletableFuture.allOf(r1,r2,r3).join(); 

System.out.println("All threads are completed now");


推荐阅读