Java 为什么';不是所有的“Executors”工厂方法都封装在“FinalizableDelegatedExecutorService”中吗?
返回包装在Java 为什么';不是所有的“Executors”工厂方法都封装在“FinalizableDelegatedExecutorService”中吗?,java,concurrency,Java,Concurrency,返回包装在FinalizableDelegatedExecutorService(非公共)中的文件FinalizableDelegatedExecutorService确保在垃圾收集时关闭线程池 为什么执行者返回的所有ExecutorService没有包装成类似于FinalizableDelegatedExecutorService的东西?如果垃圾被回收,ThreadPoolExecutor是否在没有包装在FinalizableDelegatedExecutorService中的情况下正确关闭?
FinalizableDelegatedExecutorService
(非公共)中的文件FinalizableDelegatedExecutorService
确保在垃圾收集时关闭线程池
为什么
执行者返回的所有ExecutorService
没有包装成类似于FinalizableDelegatedExecutorService
的东西?如果垃圾被回收,ThreadPoolExecutor
是否在没有包装在FinalizableDelegatedExecutorService
中的情况下正确关闭?首先,您不应该首先依赖于终结。因此,人们甚至可以说,它们都不应该被包装起来
无论如何,并非所有由Executors
工厂方法创建的池都是相同的。有些内核池大小为零,因此没有线程需要清理
类似地,forkjoinpool会在2秒后清理空闲线程,一旦没有线程使其保持活动状态,就可以使用GCable,因此不需要显式终结。如果不关闭,它仍然保留对其内部线程的引用,这将防止它被垃圾收集。嗯,很有趣。但是,由于正在运行的线程可能会引用回执行器,它会被垃圾收集吗?看。线程不知道包装器,只知道包装的执行器。你可能对这个亚当感兴趣:很好的参考!谢谢