Thanks to visit codestin.com
Credit goes to github.com

Skip to content

gongxuanzhang/gc_threadpool_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个可以被GC的线程池例子

1. 问题描述

如果在方法中创建的线程池可以被GC回收吗? 答案是不可以,因为JDK的线程池会把Runnable包装成一个Worker. Worker是线程池的一个内部类,所以每个Worker持有一个线程池实例引用。

GC Root (Thread) 持有 Worker Worker 持有 线程池.

2. 验证

直接执行本项目的Main方法,你可以看到GcThreadPool的finalize被执行,但是线程仍然存在.

注意

GcThreadPool new Thread的时候不能写成lambda表达式,因为lambda表达式也有一个隐藏的this引用,会导致线程池无法被GC回收.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages