java并行调用多个http接口,合并结果后返回
时间: 2023-10-16 18:09:01 浏览: 291
可以使用Java的线程池和Future来实现并行调用多个HTTP接口,并合并结果后返回。具体实现步骤如下:
1. 创建一个线程池,可以使用Java自带的ThreadPoolExecutor类,也可以使用第三方库如Guava的MoreExecutors类。
2. 创建多个Callable对象,每个对象负责调用一个HTTP接口并返回结果。
3. 将所有的Callable对象提交到线程池中执行,得到对应的Future对象。
4. 通过Future对象获取每个接口的返回结果,并合并为一个结果集。
5. 关闭线程池,释放资源。
下面是一个示例代码,调用了3个HTTP接口,将它们的返回结果合并为一个List:
```
ExecutorService executor = Executors.newFixedThreadPool(3);
List<Callable<List<String>>> callables = Arrays.asList(
() -> {
// 调用第一个HTTP接口
return Arrays.asList("result1", "result2");
},
() -> {
// 调用第二个HTTP接口
return Arrays.asList("result3", "result4");
},
() -> {
// 调用第三个HTTP接口
return Arrays.asList("result5", "result6");
}
);
List<Future<List<String>>> futures = executor.invokeAll(callables);
List<String> results = new ArrayList<>();
for (Future<List<String>> future : futures) {
results.addAll(future.get());
}
executor.shutdown();
return results;
```
在这个示例中,我们创建了一个含有3个线程的线程池,每个线程调用一个HTTP接口并返回结果。通过invokeAll方法提交所有Callable对象,并得到对应的Future对象。最后,通过遍历所有的Future对象获取接口的返回结果,并将它们合并为一个List返回。最后,需要手动关闭线程池。
阅读全文
相关推荐


















