如何等待使用不同的`ExecutorServices`创建的`Future`s列表

Joh*_*n B 12 java concurrency future executorservice

好的,所以我知道这里的第一个答案/评论将是"使用一个ExecutorService并使用invokeAll".但是,有一个很好的理由(我不会让人厌烦)让我们保持线程池分离.

所以我有一个线程池(ExecutorServices)列表,我需要做的是Callable在每个线程池上调用一个不同的submit(没有问题).现在我有了这个Future实例集合,每个实例都是单独创建的ExecutorService,我想等待所有这些实例完成(并且能够提供一个超时,任何未完成的操作都会被取消).

是否存在将执行此操作的现有类(包装Future实例列表并允许等待直到完成所有操作)?如果没有,将赞赏有效机制的建议.

正在考虑get为每个呼叫设置超时,但必须计算每次呼叫的总时间.

我看到这篇帖子等到任何未来完成但这延伸Future而不是包装它们的列表.

Joh*_*n B 17

根据Per Louis的评论,我在寻找的是Futures.successfulAsList

这允许我等待所有人完成,然后检查任何失败的未来.

番石榴规则!