使用单个ExecutorService
和使用相同线程池的多个CompletionService
实例是否安全?
CompletionService<Object> collector = new ExecutorCompletionService<Object>(threadPool);
因此,会有多个线程创建上面的实例,'collector'和一个singleton threadPool。
答案 0 :(得分:5)
没关系。 ExecutorCompletionService
的每个实例都维护自己的已完成任务队列,只使用基础Executor
来处理每个任务。
如果完成服务的数量很大且线程池有一个上限但这不会影响结果的正确性,那么任务可能会在性能方面相互干扰。