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

相关推荐
BBB努力学习程序设计几秒前
Java:理解数据类型和变量
java
亭上秋和景清1 分钟前
数据在内存中的存储
java·开发语言
古城小栈1 分钟前
SpringBoot:声明式事务 和 编程式事务 的擂台霸业
java·spring boot·后端
小二·4 分钟前
Java基础教程之网络编程
java·开发语言·网络
泥嚎泥嚎5 分钟前
【Android】RecyclerView 刷新方式全解析:从 notifyDataSetChanged 到 DiffUtil
android·java
努力学算法的蒟蒻6 分钟前
day23(12.3)——leetcode面试经典150
java
luod11 分钟前
RabbitMQ简单生产者和消费者实现
java·rabbitmq
弥巷11 分钟前
【Android】深入理解Window和WindowManager
android·java
okseekw18 分钟前
Java抽象类详解:从“不能生孩子”的类到模板设计模式实战
java
古城小栈21 分钟前
Spring中 @Transactional 和 @Async注解 容易不消停
java·spring