java 异步调用不同的接口获取结果
时间: 2023-12-06 17:05:34 浏览: 44
在 Java 中,可以使用多线程或异步编程框架来实现异步调用不同的接口获取结果。以下是两种常见的实现方式:
1. 使用多线程
通过启动多个线程来同时调用不同的接口,然后等待所有线程执行完毕,再将结果汇总返回。可以使用 `java.util.concurrent.Executors` 类中的线程池来管理线程,以避免创建过多的线程造成性能问题。示例代码如下:
```java
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> result1 = executor.submit(() -> {
// 调用接口1并返回结果
return "result1";
});
Future<String> result2 = executor.submit(() -> {
// 调用接口2并返回结果
return "result2";
});
// 等待所有线程执行完毕
executor.shutdown();
executor.awaitTermination(1, TimeUnit.MINUTES);
// 汇总结果
String finalResult = result1.get() + result2.get();
```
2. 使用异步编程框架
通过使用异步编程框架,可以在调用接口时立即返回一个 `CompletableFuture` 对象,该对象表示异步操作的结果。可以使用 `CompletableFuture.allOf` 方法等待所有操作完成,并通过 `CompletableFuture.join` 方法获取结果。示例代码如下:
```java
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
// 调用接口1并返回结果
return "result1";
});
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> {
// 调用接口2并返回结果
return "result2";
});
// 等待所有异步操作完成
CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2);
allFutures.join();
// 汇总结果
String finalResult = future1.join() + future2.join();
```