CompletableFuture等待所有任务执行完成再往下执行
时间: 2023-10-19 15:02:55 浏览: 274
如果你想要等待所有的任务执行完成之后再继续执行下面的代码,可以使用Java 8中的CompletableFuture类来实现。CompletableFuture类是一个可以帮助我们简化异步编程的工具类,它可以将多个异步任务组合成一个新的异步任务。
你可以使用CompletableFuture的静态方法`allOf()`来等待所有的任务执行完成。`allOf()`方法接受一个可变参数,可以将多个CompletableFuture对象传入其中,然后返回一个新的CompletableFuture对象。当所有的CompletableFuture对象都执行完成之后,这个新的CompletableFuture对象就会完成,你可以在这个对象上调用`join()`方法来等待所有的任务执行完成。
下面是一个使用CompletableFuture等待所有任务执行完成的例子:
```java
List<CompletableFuture<Void>> futures = new ArrayList<>();
for (int i = 0; i < 10; i++) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 执行异步任务
});
futures.add(future);
}
CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()]));
allFutures.join();
// 所有的异步任务都执行完成之后,继续执行下面的代码
```
在这个例子中,我们创建了10个异步任务,并将它们的CompletableFuture对象添加到一个列表中。然后,我们使用`CompletableFuture.allOf()`方法来等待所有的任务执行完成,并调用`join()`方法来阻塞当前线程,直到所有的任务执行完成。最后,在所有的任务执行完成之后,我们可以继续执行下面的代码。
阅读全文