还是没明白key是什么样的情况下才变成null的
public static ThreadLocal<Object> threadLocal = new ThreadLocal(){ ... };
1、上面代码是一个强引用吧?它引用了一个ThreadLocal对象。
既然有强引用,垃圾回收器又怎么会回收这个key呢?
2、被垃圾回收器回收后,弱引用会自动变为null?
32
收起
正在回答
2回答
同学你好,
1、每个Thread线程内部都维护一个ThreadLocalMap字典数据结构,字典的Key值是ThreadLocal。
ThreadLocalMap使用ThreadLocal的弱引用作为key,如果一个ThreadLocal没有外部强引用来引用它,那么系统GC垃圾回收的时候,这个ThreadLocal就会被回收。
2、ThreadLocal对象在主线程中并没有持有强引用哦。这涉及了一些底层的知识,现阶段同学同学不用太关注,在有了一定的基础后,再来深入研究可能会更好一些呐。
java工程师2020版
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星