假设您被强制实现此接口:
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 ...
}