【每日阅读】2021年01月07日-ThreadLocal的实现

真诚的希望您能留言与我交流,这会对我有非常大的帮助!

一般理解可能说在ThreadLocal内存储一个Map,Map的key是Thread,value是对象,但其实不是这样。

实际上是这样,在Thread内部有一个ThreadLocalMap,这个Map的key是ThreadLocal,value是对象。

这样的设计使得ThreadLocal只充当一个代理类,和线程相关的数据都存储在Thread内部。第二个原因是不容易内存泄漏,因为ThreadLocal生命周期一般比线程长,一旦没有remove操作,则Thread引用一直会在ThreadLocal内,导致Thread不会被回收,造成内存泄漏。

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2776

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部