completablefuture 结果汇聚
时间: 2023-10-22 11:06:16 浏览: 84
CompletableFuture 是 Java 8 引入的一个异步编程工具,可以方便地进行异步任务的组合和结果汇聚。CompletableFuture 提供了多种方法来汇聚多个异步任务的结果,包括 allOf、anyOf 和 join 等。
其中,allOf 方法可以接收多个 CompletableFuture 对象,并返回一个新的 CompletableFuture 对象,该对象在所有输入 CompletableFuture 对象都完成时完成。例如:
```
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "World");
CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2);
allFutures.join(); // 等待所有任务完成
```
anyOf 方法也可以接收多个 CompletableFuture 对象,并返回一个新的 CompletableFuture 对象,该对象在任意一个输入 CompletableFuture 对象完成时完成。例如:
```
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello";
});
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "World");
CompletableFuture<Object> anyFuture = CompletableFuture.anyOf(future1, future2);
System.out.println(anyFuture.join()); // 输出 "World"
```
join 方法可以等待当前 CompletableFuture 对象完成,并返回其结果。如果 CompletableFuture 对象还没有完成,则 join 方法会阻塞当前线程,直到该对象完成。例如:
```
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
String result = future.join(); // 等待 future 完成,并返回其结果
System.out.println(result); // 输出 "Hello"
```
阅读全文