一、ThreadLocal是什么 ?
ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些,
即:线程变量。
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
二、ThreadLocal怎么用
三、ThreadLocal源码分析
四、ThreadLocal内存泄漏问题
ThreadLocal是一个弱引用,当为null时,会被当成垃圾回收。
重点来了,突然ThreadLocal是null了,也就是要被垃圾回收器回收了,但是此时我们的ThreadLocalMap生命周期和Thread的一样,它不会回收,这时候就出现了一个现象。那就是ThreadLocalMap的key没了,但是value还在,这就造成了内存泄漏。
解决办法:使用完ThreadLocal后,执行remove操作,避免出现内存溢出情况。
五、学习链接(后期补充,暂时仅用于面试)
学习链接
链接1:https://blog.csdn.net/qjyong/article/details/2158097
链接2:https://baijiahao.baidu.com/s?id=1653790035315010634&wfr=spider&for=pc