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

相关推荐
kevien_G111 分钟前
微服务之OpenFeign最佳实践
java·微服务·架构
江湖有缘14 分钟前
Docker实战 | 使用Docker部署ShipShipShip自托管产品更新与功能投票系统
java·linux·服务器·docker
范什么特西15 分钟前
亲和路由11
java
诺NA亚24 分钟前
ElasticSearch+RAG初使用
java
SamDeepThinking27 分钟前
synchronized 和 lock 有什么区别?
java·后端·面试
m0_5873830033 分钟前
无人自助拼豆系统的全栈开发方案
java·后端·struts·小程序·架构
临期冰淇淋1 小时前
MTK平台 安卓16 GMS报错修改
android·java·前端
人道领域1 小时前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#
Wang's Blog1 小时前
Java 项目实战: 交友项目 - Dubbo 入门案例全流程复盘
java·dubbo·交友
小七在进步1 小时前
初识C++中的模板
java·开发语言·c++