invokeAll()
直到提交的 Collection
中的所有 Callable
都完成后才会返回,那么是什么原因使结果 Future
s?
最佳答案
因为任务可能正常或异常终止,Futures
可以为您包装异常。例如,
Callable<Integer> c1 = () -> 1;
Callable<Integer> c2 = () -> {
throw new RuntimeException();
};
List<Future<Integer>> futures = executor.invokeAll(Arrays.asList(c1,c2));
for (Future<Integer> future : futures) {
System.out.println(future.get());
}
请注意,因为 Future
,我们能够得到正常终止和异常终止的 future 结果。
如果invokeAll
返回了 List<T>
,它必须返回那些成功完成的并丢弃那些有异常的。
关于java - 为什么 ExecutorService.invokeAll() 会返回一个 Future 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367513/