我有一组要处理的记录,并且处理可以并行化,所以我创建了一个ExecutorService(通过Executors#newCachedThreadPool()).单个记录的处理本身由可并行化的步骤组成,所以我想使用另一个ExecutorService
.是否有一种简单的方法可以使这个新的使用相同的底层线程池?它甚至是可取的吗?谢谢.
回答你的问题:不,两个ExecutorService
对象不能共享一个线程池.但是,您可以根据需要ExecutorService
在对象之间共享,或者创建多个Executor,但不建议这样做.
最佳解决方案:Executor
在您的对象之间共享.
简答:不.
更长的答案:你需要自己的实现来做到这一点.ExecutorService
是一个界面,AbstractExecutorService
很容易实现.如果您希望两个ExecutorService
共享相同的ThreadPool(例如,具有不同的最大活动线程值),您可以使用代理模式来进行ThreadPool共享ExecutorService
.