java - 在多个线程中调用多个rest/soap服务并等待它们的响应

标签 java multithreading rest soap fork-join

我必须从一个方法调用三个方法。这三个方法依次调用各种 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/

相关文章:

java - 如何阻塞和解除阻塞 servlet 线程?

生产者消费者的Java实现抛出java.lang.IllegalMonitorStateException

javascript - 如何使用javascript ajax调用下载txt文件

java - SecureRandom 初始化缓慢

Java,返回方法作为引用

java - JMenu 添加菜单监听器

c# - 事件对象模式的 .NET 实现

java - ComboPooledDataSource 不重用连接

java - 关于 RESTful Java Web 服务框架的建议...

REST - 同一资源的多个 URI (???)