我有一组由将Callable
提交给Executor
创建的Futures
。伪代码:
for all tasks
futures.add(executor.submit(new callable(task)))
现在我想要获取所有等待时间最多为n秒的futures,直到全部完成。我知道我可以调用Future#get(timeout)
,但如果我在循环中逐个调用所有的futures,超时时间将会不断累加。 伪代码:
for all futures
future.get(timeout)
使用带有超时的
get
方法获取块,直到结果准备就绪。 因此,如果第一个刚好在超时之前完成,第二个也正好在超时之前完成,以此类推,则整个执行时间最多为 未来数量*超时时间
,而不是 超时时间
。因此,我正在寻找一种接受
Future
列表和超时时间的方法,在并行运行所有内容后返回未来结果集合。 有什么想法吗?
isDone
方法来实现这一点。 - Marcel Stör