ThreadLocal的原理

ThreadLocal原理

1ThreadLocal是一个工具类,为每个线程提供自己专属的本地变量

2ThreadLocal底层是通过ThreadLocalMap实现的,每个Thread对象中存在一个ThreadLocalMap,Map的key为ThreadLocal对象 ,Map的value为要缓存的值

ThreadLocal内存泄露问题是怎么产生的?

ThreadLocalMap 中使用的 key 为 ThreadLocal 的弱引用,而 value 是强引用。,在垃圾回收的时候,key 会被清理掉,而 value 不会被清理掉。假如我们不做任何措施的话,value 永远无法被 GC 回收,这个时候就可能会产生内存泄露。使用完 ThreadLocal方法后最好手动调用remove()方法(清除ThreadLocalMap中的带有key为该ThreadLocal对象的Entry)。

ThreadLocal的应用场景

当一个共享变量是共享的,但是需要每个线程互不影响,相互隔离,就可以使用ThreadLocal

相关推荐
苍煜12 小时前
SpringBoot AOP切面编程精讲:实现方式、Spring区别及与自定义注解生产实战
java·spring boot·spring
胡小禾12 小时前
企业内部文件处理方案
java
常利兵13 小时前
Spring Boot:别再重复造轮子,这些内置功能香麻了
java·spring boot·后端
咸鱼翻身小阿橙13 小时前
Qt QML调用C++注册类
java·c++·qt
逸Y 仙X14 小时前
文章二十一:ElasticSearch 词项查询与调度查询实战
java·大数据·数据库·elasticsearch·搜索引擎
Bechamz14 小时前
大数据开发学习Day25
java·大数据·学习
咖啡八杯14 小时前
GoF设计模式——单例模式
java
0xDevNull14 小时前
JDK多版本切换安装与配置
java·后端
流年似水~14 小时前
Java新手5分钟接AI:Spring AI Alibaba实战
java·人工智能·spring