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

相关推荐
@小码农2 分钟前
6547网:202512 GESP认证 C++编程 一级真题题库(附答案)
java·c++·算法
秋93 分钟前
idea中使用AI编程助手Cursor详解
java·intellij-idea·ai编程
q行4 分钟前
java学习日志--IO流(使用)
java·学习·io流
vyuvyucd5 分钟前
Linux线程编程:POSIX与C++实战指南
java·开发语言
菜鸟233号16 分钟前
力扣343 整数拆分 java实现
java·数据结构·算法·leetcode
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 日程管理系统为例,包含答辩的问题和答案
java
a努力。1 小时前
京东Java面试被问:双亲委派模型被破坏的场景和原理
java·开发语言·后端·python·面试·linq
小毛驴8501 小时前
Maven同时配置阿里云仓库和私有仓库
java·阿里云·maven
刘97531 小时前
【第25天】25c#今日小结
java·开发语言·c#
不如打代码KK1 小时前
Springboot如何解决跨域问题?
java·spring boot·后端