live thread 可以作为 gc root, 那么 waiting 状态的线程呢?

查看 37|回复 0
作者:lry   
这个问题的背景是我发现项目中大量使用了 ExecutorService pool = Executors.newSingleThreadExecutor() 作为局部变量使用
而 JDK 8 中的 SingleThreadExecutor 是用 new FinalizableDelegatedExecutorService 包了一层,实现了 finalize 方法会调用线程池的 shutdown() 方法。
我觉得比较疑惑的是,方法调用完之后,ThreadPoolExecutor 中的 workers 仍然有着对核心线程的引用,为什么局部变量 pool 为什么会被回收。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部