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

相关推荐
java1234_小锋7 小时前
Spring Boot 中 Starter 是什么?它的核心规范有哪些?请说明如何自定义一个 Starter。
java·spring boot·后端
良枫7 小时前
自进化 agent:核心模块一任务规划器 Planner
java·服务器·windows
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第114题】【并发篇】第14题:说一下悲观锁的优点和缺点?
java·开发语言·面试
让我上个超影吧7 小时前
Claude Code 源码看 Agent 系统设计
java·ai·ai编程
plainGeekDev7 小时前
网络状态监听 → ConnectivityManager + Flow
android·java·kotlin
devilnumber7 小时前
Java 迭代器(Iterator)完全指南:从入门到实战
java·开发语言·迭代器
qq_195821657 小时前
6. 应用层协议实现:CoE协议栈集成、对象字典配置、PDO映射
java·服务器·网络
弹简特7 小时前
【Java项目-轻聊】10-实现会话管理模块
java·开发语言·数据库
人道领域7 小时前
Java后端开发者转型AIAgent开发路线指南
java·开发语言
许彰午7 小时前
36_Java设计模式之代理模式
java·设计模式·代理模式