ExecutorCompletionService 缺少 invokeAll 接口
ExecutorCompletionService missing invokeAll interface
所以阅读 ExecutorCompletionService
的 javadoc,看起来它使用了具有 invokeAll()
方法的线程池执行器,但是 ExecutorCompletionService
只提供了 submit() 方法,因此不允许我们如果任务是通过 ExecutorCompletionService
提交的,则调用 invokeAll
并立即触发所有任务。
它不应该支持 invokeAll()
这样我就可以准备任务列表并调用
ExecutorCompletionService.invokeAll(listOfTasks);
而不是调用
ExecutorCompletionService.submit(task);
在 for 循环中?
没有。 ExecutorCompletionService
是 CompletionService
,而不是 ExecutorService
。 CompletionService
的全部意义在于提供一种通过轮询检查已完成任务的机制。
invokeAll
阻塞,直到所有提交的任务完成。
这些是相反的特征。
所以阅读 ExecutorCompletionService
的 javadoc,看起来它使用了具有 invokeAll()
方法的线程池执行器,但是 ExecutorCompletionService
只提供了 submit() 方法,因此不允许我们如果任务是通过 ExecutorCompletionService
提交的,则调用 invokeAll
并立即触发所有任务。
它不应该支持 invokeAll()
这样我就可以准备任务列表并调用
ExecutorCompletionService.invokeAll(listOfTasks);
而不是调用
ExecutorCompletionService.submit(task);
在 for 循环中?
没有。 ExecutorCompletionService
是 CompletionService
,而不是 ExecutorService
。 CompletionService
的全部意义在于提供一种通过轮询检查已完成任务的机制。
invokeAll
阻塞,直到所有提交的任务完成。
这些是相反的特征。