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

相关推荐
CoderYanger8 分钟前
贪心算法:4.摆动序列
java·算法·leetcode·贪心算法·1024程序员节
默 语19 分钟前
Spring-AI vs LangChain4J:Java生态的AI框架选型指南
java·人工智能·spring·ai·langchain·langchain4j·spring-ai
kk哥889937 分钟前
springboot静态资源的核心映射规则
java·spring boot·后端
老毛肚38 分钟前
Java两种代理模式详解
java·开发语言·代理模式
要站在顶端39 分钟前
Jenkins PR编号提取&环境变量赋值问题总结
java·servlet·jenkins
愚公移码42 分钟前
蓝凌EKP产品:Hibernate 中 SessionFactory、Session 与事务的关系
java·数据库·hibernate·蓝凌
TT哇1 小时前
【每日八股】面经常考
java·面试
何中应1 小时前
【面试题-4】JVM
java·jvm·后端·面试题
老毛肚1 小时前
黑马头条-再回首
java
专注于大数据技术栈1 小时前
java学习--8个包装类
java·学习