ThreadLocal的使用
代码展示
1 | public class ThreadLocalTest implements Runnable { |
打印展示
内部数据结构
1 | 一个线程类中有一个ThreadLocalMap,ThreadLocalMap中可以有多个Entry,每个Entry都存储了一个ThreadLocal本地变量 |
set方法源码解析
1 | 1.调用时需要传递一个参数 |
get方法源码
1 | 1.进入get方法后,首先同set方法一样获取一个线程对象,使用getMap方法获取当中的ThreadLocalMap对象 |
可能会导致的内存泄漏
问题原因
1 | 1.在ThreadLocal中保存值时,会放入Entry对象 |
解决方法
1 | 合理使用ThreadLocal对象,并及时的对其使用remove方法进行资源释放 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123!