是否有两个ExecutorServices可以共享一个线程池?

Han*_*Gay 7 java concurrency threadpool

我有一组要处理的记录,并且处理可以并行化,所以我创建了一个ExecutorService(通过Executors#newCachedThreadPool()).单个记录的处理本身由可并行化的步骤组成,所以我想使用另一个ExecutorService.是否有一种简单的方法可以使这个新的使用相同的底层线程池?它甚至是可取的吗?谢谢.

Yuv*_*dam 7

回答你的问题:,两个ExecutorService对象不能共享一个线程池.但是,您可以根据需要ExecutorService在对象之间共享,或者创建多个Executor,但不建议这样做.

最佳解决方案:Executor在您的对象之间共享.


Den*_*s C 6

简答:不.

更长的答案:你需要自己的实现来做到这一点.ExecutorService是一个界面,AbstractExecutorService很容易实现.如果您希望两个ExecutorService共享相同的ThreadPool(例如,具有不同的最大活动线程值),您可以使用代理模式来进行ThreadPool共享ExecutorService.