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

相关推荐
盐水冰7 分钟前
【烘焙坊项目】后端搭建(6)- 店铺状态设置
java·redis
健康平安的活着10 分钟前
java中乐观锁+事务在批量导入,批量审批案例的使用
java·开发语言
夏语灬10 分钟前
SpringBoot集成MQTT客户端
java·spring boot·后端
Memory_荒年13 分钟前
Spring Boot自动装配:告别“配置地狱”的智能管家
java·后端·spring
盐水冰27 分钟前
【烘焙坊项目】后端搭建(9)- 缓存实现及购物车相关功能开发
java·后端·spring
gameboy03127 分钟前
在Nginx上配置并开启WebDAV服务的完整指南
java·运维·nginx
重庆小透明29 分钟前
【面试问题第一篇】快手后端java一面
java·面试·职场和发展
1104.北光c°35 分钟前
我理解的Leaf号段模式:美团分布式ID生成系统
java·开发语言·笔记·分布式·github·leaf
空空潍38 分钟前
RabbitMQ高级(2w字笔记)
java·rabbitmq·java-rabbitmq
weixin_443478511 小时前
Flutter学习之导航与路由
java·学习·flutter