如何从列表中检索下一个CompletableFuture?

时间:2019-10-13 18:24:10

标签: java java.util.concurrent

假设您被强制实现此接口:

public void process(List<CompletableFuture<T>> futures);

假设您要按顺序进一步处理每个项目。

什么是用最少的代码立即完成当前线程中的每个CompletableFuture<T>的最有效方法?

这是可以做到的最好的吗?它太冗长且效率不高,并且根本无法扩展:

ExecutorService pool = Executors.newFixedThreadPool(futures.size()); // yikes
CompletionService<T> queue = new ExecutorCompletionService<>(pool);
// pseudo-code: try-catch omitted for clarity
futures.forEach(future -> queue.submit(() -> future.get()));
for(int i=0; i < futures.size(); ++i) { 
    T item = queue.take();
    ... process ...
}

0 个答案:

没有答案