5
我通过流式传输对象列表来调用异步客户端方法。该方法返回Future。在期货列表上流式传输的最有效方式
对呼叫后返回的期货列表进行迭代的最佳方式是什么(以便处理那些首先出现的未来)?
注意:异步客户端只返回Future not CompletableFuture。
以下是代码:
List<Future<Object>> listOfFuture = objectsToProcess.parallelStream()
.map((object) -> {
/* calling an async client returning a Future<Object> */ })
.collect(Collectors.toList());
你考虑使用CompletionService而不是结果到一个数组映射? http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CompletionService.html –
也许试试[CompletionService](http://docs.oracle.com/javase/7/docs/ API/JAVA/UTIL /并发/ CompletionService.html)?这里是[解释](http://stackoverflow.com/a/19348417/6785649)。 –
如果您无法控制生成“Future”的代码/将作业提交给“Executor”,那么'CompletionService'就没有用处了。 – Holger