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

相关推荐
starzy19909 小时前
Flink基础之Per-Job-Cluster原理详解:被 Application 取代的模式
java·大数据·flink
魏 无羡16 小时前
webclient
java·webclient
神仙别闹17 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
swordbob17 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
m0_5873830018 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥18 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
一技安身19 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe20 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
时凌云.20 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
Despacito100620 小时前
Java后端性能探查工具速查表
java·开发语言