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

相关推荐
武超杰6 分钟前
Spring Boot入门教程
java·spring boot·后端
左左右右左右摇晃6 分钟前
JDK 1.7 ConcurrentHashMap——分段锁
java·开发语言·笔记
是小蟹呀^10 分钟前
Java抽象类详解:从入门到精通
java·抽象类
IT 行者13 分钟前
Spring Boot 集成 JavaMail 163邮箱配置详解
java·spring boot·后端
lzhdim18 分钟前
SQL 入门 7:SQL 聚合与分组:函数、GROUP BY 与 ROLLUP
java·服务器·数据库·sql·mysql
弹简特24 分钟前
【JavaEE】Mybatis实现分页查询功能
java·java-ee·mybatis
烤麻辣烫26 分钟前
I/O流 基础流
java·开发语言·学习·intellij-idea
Jasonakeke27 分钟前
我的编程来时路
java·c++·python
Yvonne爱编码32 分钟前
Java 中的 hashCode () 与 equals () 核心原理、契约规范、重写实践与面试全解
java·开发语言·数据结构·python·hash
gelald34 分钟前
JVM - 运行时内存模型
java·jvm·后端