因此,阅读ExecutorCompletionService
的javadoc,看起来它使用的是具有invokeAll()
等方法的threadpoolexecutor,但ExecutorCompletionService
只提供了submit()方法,因此不允许我们调用invokeAll
如果通过ExecutorCompletionService
提交任务,则会立即触发所有任务。
它不应该支持invokeAll()
,以便我可以准备任务列表并调用类似
ExecutorCompletionService.invokeAll(listOfTasks);
而不是打电话
ExecutorCompletionService.submit(task);
在for循环中?
答案 0 :(得分:2)
没有。 ExecutorCompletionService
是CompletionService
,而不是ExecutorService
。 CompletionService
的重点是提供一种机制,通过轮询检查已完成的任务。
invokeAll
阻止所有提交的任务完成。
这些是相反的特征。