我已经养成了将ExecutorServices封装在listeningDecorator中以生成ListeningExecutorService的习惯。据我所知,这是番石榴队的推荐,而且似乎总是值得的。
然而,我在这里遇到了一个问题。我的执行器基于标准的ThreadPoolExecutor是不变的,我希望将线程池大小的控制权交给我的应用程序(特别是将它公开给支持应用程序的管理员)。对于未修饰的ThreadPoolExecutor,需要公开执行此操作的方法,但是包装器正在向我隐藏委托。
那么,我需要做什么才能回到ThreadPoolExecutor公开的api而不放弃listeningDecorator呢?
我有几个想法:
创建一个新的delegate
Executor
ThreadPoolExecutor的引用,并且只有当以requested
)时,才对ThreadPoolExecutor进行包装。
发布于 2012-04-19 18:21:13
这里的番石榴团队成员。
我会编写一个新的ListeningThreadPoolExecutor类,它基本上是一个包装ThreadPoolExecutor的ListeningDecorator变体,但我不会公开委托本身,而是从转发到委托ThreadPoolExecutor的ListeningThreadPoolExecutor中公开setCorePoolSize(int size)方法。
与选项1相比,这种方法所暴露的内部细节更少,但如果不能做到这一点,我将回到您已经描述过的选项1。
https://stackoverflow.com/questions/10233689
复制相似问题