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

相关推荐
one_love_zfl14 分钟前
java面试-微服务组件篇
java·微服务·面试
一只大袋鼠17 分钟前
Java进阶:CGLIB动态代理解析
java·开发语言
环流_30 分钟前
HTTP 协议的基本格式
java·网络协议·http
爱滑雪的码农31 分钟前
Java基础十三:Java中的继承、重写(Override)与重载(Overload)详解
java·开发语言
【 】42335 分钟前
C++&STL(Standard Template Library,标准模板库)
java·开发语言·c++
茉莉玫瑰花茶35 分钟前
LangChain 核心组件 [ 2 ]
java·数据库·langchain
信徒_1 小时前
ID 生成技术选型
java
a8a3021 小时前
Laravel8.x新特性全解析
java·spring boot·后端
XiYang-DING1 小时前
【Java EE】CAS(Compare And Swap)
java·开发语言·java-ee
白露与泡影1 小时前
Spring Boot 完整流程
java·spring boot·后端