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

相关推荐
大风起兮云飞扬丶13 小时前
Java——枚举
java·开发语言
ReStock活库13 小时前
Zephyr异步SPI调用返回后,为什么不能立即复用发送缓冲区?
java·前端·网络
微微%14 小时前
从零搭建一个java开发环境
java·idea2023·jdk17
SimonKing14 小时前
又找到一个纯Java的OCR项目,识别的格式还挺多
java·后端·程序员
lengxuenong14 小时前
区间覆盖问题 · 简明学习手册1
java·学习·算法
?abc!14 小时前
(贪心)621. 任务调度器
java·前端·c#
jason成都14 小时前
rtklib_java PPP-RTK 收官测试:修复 BDS-2 宽巷失效与异常卫星死循环 Bug
java·gnss·rtklib·rtklib_java
Flynn Liang14 小时前
Spring AI ChatClient 详解:system/user/assistant 角色、call 与 stream 到底怎么选
java·人工智能·spring·springai·流式输出·chatclient·java接入大模型
Wang's Blog14 小时前
Java 项目实战: 交友项目 - 喜欢与取消喜欢
java·开发语言·交友
摸鱼仙人~14 小时前
校招帮简历字段匹配架构分析报告
java·前端·架构