关于threadlocal
来源:4-15 收不回来的value

sadcloud
2020-08-06
悟空老师,我有两个问题,问题比较小白,还望解惑,十分感谢!
- 手动设置threadlocal=null 和 调用remove方法 二者分别用在什么时候呢?是等效的吗?
- 设计entry时候为什么不能把value也设计成弱引用呢,这样gc就一次性都回收掉了 (问题可能有点好笑,还是希望老师可以简单和我说下这种思路的问题)
写回答
2回答
-
慕桂英43175126
2020-08-09
我分享一下理解,此处的key设置弱引用,但是value设置为强引用,十分精巧,因为使用线程池的情况下,线程不会死,所以对于entry的强引用一直存在,如果主动把value设置null,那么因为entry只有一个弱引用了,也可以清理掉,但是不会清理掉key,那么弱引用就体现价值了,因为entry对象只包含弱引用,所以可以直接被GC掉
00 -
悟空
2020-08-07
threadlocal=null设置的是threadlocal,但是remove是清除value
value如果设计成弱引用,那么可能在需要value的时候却提示已经被回收了。
022022-11-28
相似问题