CompletableFuture 异步执行多个任务
时间: 2023-10-17 14:44:45 浏览: 101
使用`CompletableFuture`可以方便地实现异步执行多个任务,并在所有任务完成后进行处理。下面是一个示例代码:
```java
import java.util.concurrent.CompletableFuture;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建多个CompletableFuture对象
CompletableFuture<String> task1 = CompletableFuture.supplyAsync(() -> "Task 1");
CompletableFuture<String> task2 = CompletableFuture.supplyAsync(() -> "Task 2");
CompletableFuture<String> task3 = CompletableFuture.supplyAsync(() -> "Task 3");
// 执行所有任务并等待完成
CompletableFuture<Void> allTasks = CompletableFuture.allOf(task1, task2, task3);
// 在所有任务完成后进行处理
allTasks.thenRun(() -> {
try {
// 获取任务的结果
String result1 = task1.get();
String result2 = task2.get();
String result3 = task3.get();
System.out.println("Task 1 result: " + result1);
System.out.println("Task 2 result: " + result2);
System.out.println("Task 3 result: " + result3);
// 继续后续的操作
// ...
} catch (Exception e) {
e.printStackTrace();
}
});
// 等待所有任务完成
allTasks.join();
}
}
```
在上述代码中,我们创建了三个`CompletableFuture`对象:`task1`、`task2`和`task3`,它们代表了三个异步任务。然后,我们使用`CompletableFuture.allOf()`方法将这三个任务组合成一个新的`CompletableFuture`对象`allTasks`,该对象将在所有任务完成后触发。在`allTasks.thenRun()`中,我们定义了所有任务完成后的处理逻辑,包括获取每个任务的结果并进行处理。最后,我们调用`allTasks.join()`方法等待所有任务完成。
使用`CompletableFuture`可以更灵活地处理异步任务的结果和异常,还可以通过方法链的方式组合多个任务。
阅读全文