spring - Spring Boot @Async 等待所有线程完成
问题描述
我必须与不同的服务器建立多个连接并运行一些命令,我正在使用 for 来调用 Async 方法,但我不知道所有线程何时完成以发送其他进程。
解决方案
您可以@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");
推荐阅读
- c++ - C++ - 子串运行时超出范围错误(在 ROS 上)
- javascript - 如何使用矩获得不同的时差?
- xamarin - 崩溃 xamarin 表单 android 应用程序后删除的数据
- php - 如何使用 PHP 创建将网站上的表单连接到 CRM 的 API
- java - 如何在没有自动装配的情况下实例化spring数据jpa存储库
- python - 如何找到一行数据中两列值之间的最大差异
- html - 元素上的边距将整个页面向下移动
- javascript - 如何在打开搜索结果后保留搜索输入的历史记录,然后通过浏览器按钮返回 Angular2 中的谷歌搜索?
- reactjs - 输入文本验证本机反应
- java - 无法使用 Idea 启动 Cucumber 测试