ThreadLocal不同类型tl itl ttl
- ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal的使用场景和实现原理
类型 | 使用场景 | 实现原理 |
ThreadLocal | 解决多线程共享变量问题,为每个线程创建一个变量副本 |
使用ThreadLocalMap<ThreadLocal, Object>存储线程和value的映射关系,ThreadLocalMap是Thread类的成员变量
|
InheritableThreadLocal | 解决父子线程变量副本传递的问题 |
Thread 中除 threadLocals 属性外,还有一个 inheritableThreadLocals 属性,其类型也是 ThreadLocalMap,在Thread的init()方法中进行赋值
这就解释了为什么InheritableThreadLocal为什么在线程池中用不了(init 方法只会在线程创建时被执行一次)。 注意:拷贝父类的inheritableThreadLocal到子类中属于浅拷贝(如果在子类中改动,之后在父类中也能获取到最新值) |
TransmittableThreadLocal | 解决线程池的线程复用导致的变量副本问题 |
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用