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

相关推荐
张宜强8 小时前
023 SpringBoot实现萌宠集市
java·课程设计
花哥码天下8 小时前
docker流水线
java
十二同学啊8 小时前
Drools规则引擎:让复杂业务规则从代码中解耦
java·后端·开源
周先生FullStack8 小时前
Mac + 容器本地 MySQL/Redis 环境搭建与网络原理实战
java·spring boot·微服务·容器·架构·个人开发
吠品9 小时前
Nginx负载均衡配置与线上故障排查的一些经验
java·开发语言·数据库
边境悍匪9 小时前
蜗牛学苑 Java 智能体学习 Day44|Vue 前端项目搭建 思维导图复盘
java·开发语言·spring boot·学习·阿里云
万年咸鱼9 小时前
public class 和 class 的区别详解
java
焦虑的说说9 小时前
redis知识汇总
java·redis
Wang's Blog9 小时前
Java 接入Redis: 密码认证与远程连接配置
java·服务器·redis