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

相关推荐
新之助小锅1 小时前
java版连接汇川PLC,发送数据,读取数据,保持重新链接,适用安卓
android·java·python
无糖冰可乐213 小时前
IDEA多java版本切换
java·ide·intellij-idea
合作小小程序员小小店3 小时前
web开发,在线%超市销售%管理系统,基于idea,html,jsp,java,ssh,sql server数据库。
java·前端·sqlserver·ssh·intellij-idea
brucelee1863 小时前
IntelliJ IDEA 设置 Local History 永久保留
java·ide·intellij-idea
Pluto_CSND5 小时前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
百***46456 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
serve the people6 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
一叶飘零_sweeeet6 小时前
不止于 API 调用:解锁 Java 工具类设计的三重境界 —— 可复用性、线程安全与性能优化
java·工具类
A阳俊yi8 小时前
Spring Data JPA
java·开发语言
小王不爱笑1328 小时前
Spring AOP(AOP+JDBC 模板 + 转账案例)
java·后端·spring