我必须启动未知数量的线程,然后等待或所有线程完成其工作。我正在使用执行程序服务。我尝试使用countdownlatch-这样我可以等到倒数为零。 但是我无法获得已经启动的线程数。有人可以告诉我如何实现这一目标吗?
答案 0 :(得分:0)
如果要合并CompletableFutures
的列表,可以执行以下操作:
// Waits for *all* futures to complete and returns a list of results.
// If *any* future completes exceptionally then the resulting future will also complete exceptionally.
public static <T> CompletableFuture<List<T>> all(List<CompletableFuture<T>> futures) {
CompletableFuture[] cfs = futures.toArray(new CompletableFuture[futures.size()]);
return CompletableFuture.allOf(cfs)
.thenApply(ignored -> futures.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList())
);
}
有关Future&CompletableFuture的更多详细信息,有用的链接:
答案 1 :(得分:0)
感谢您的回复。我遇到了答案,它有所帮助。共享链接以供参考。 Flexible CountDownLatch?