我必须从一个方法调用三个方法。这三个方法依次调用各种 REST 或 SOAP 服务。 我想使这三个方法的处理是异步的,即其余调用和 SOAP 调用是并行进行的。另外,我希望主线程等待所有这些线程完成,然后对线程接收到的数据进行一些处理。 实现这一目标的最佳方法是什么? 我想我可以研究以下方法 -
- fork 连接 (java 7)
- 并行流
- 执行器服务(在这种情况下使用它是否明智?)
还有其他方法吗? 上述哪种方法最适合我的场景?
最佳答案
执行人服务+可完成的 future
List<CompletableFuture<SomeResponse>> futures = new ArrayList<>();
//assign futures to executor
futures.add(CompletableFuture.supplyAsync(() -> client.perform(request), executor));
...
//create combined future
CompletableFuture combinedFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()]));
//wait for all features to execute or timeout
combinedFuture.get(50, TimeUnit.SECONDS);
//go through results
for (CompletableFuture<SomeResponse> future : futures){
...
}
关于java - 在多个线程中调用多个rest/soap服务并等待它们的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51929872/