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

相关推荐
小妖66613 小时前
js 实现python的SortedList有序集合
java·javascript·python
梦梦代码精13 小时前
电商系统的核心难点:订单与营销系统如何设计?——LikeShop 架构深度拆解(规则计算与状态一致性)
java·开发语言·低代码·架构·开源·github
SZLSDH13 小时前
专项治理场景下,数字孪生IOC的架构适配逻辑:以智慧河湖监管为例
java·大数据·架构·数据可视化
隐退山林13 小时前
JavaEE进阶:SpringBoot日志
java·开发语言
东风微鸣13 小时前
AWS 可靠性最佳实践:从架构设计到故障恢复一把梭
java·jvm·aws
敲敲千反田13 小时前
微服务基础
java·微服务·架构
ideal-cs13 小时前
总结:生产环境Logback日志配置模板与pattern格式案例
java·log4j·logback·pattern·后端日志
ooseabiscuit13 小时前
Laravel3.x核心特性全解析
java·数据库·spring
凤山老林13 小时前
慢SQL治理:索引优化实战指南——从定位到优化的完整解决方案
java·sql·springboot·慢sql治理·sql 性能优化
Aision_17 小时前
从工具调用到 MCP、Skill完整学习记录
java·python·gpt·学习·langchain·prompt·agi