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

相关推荐
lang201509282 分钟前
20 Byte Buddy 深度解析:零依赖架构与高级参数注入艺术
java
Memory_荒年7 分钟前
Java内存模型(JMM):别让你的代码在“马”路上翻车!
java·后端
Memory_荒年9 分钟前
虚拟线程:让Java轻功水上漂,告别“线程体重焦虑”
java·后端
泡沫_cqy15 分钟前
Java初学者文档
java·开发语言
是晴天呀。24 分钟前
火山引擎接入项目
java·火山引擎
隔壁小邓1 小时前
Spring-全面讲解
java·后端·spring
JustMove0n1 小时前
互联网大厂Java面试全流程问答及技术详解
java·jvm·redis·mybatis·dubbo·springboot·多线程
SimonKing1 小时前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
玹外之音1 小时前
Spring AI 11 种文档切割策略全解析
java·spring·ai编程