ThreadLocal不同类型tl itl ttl
Posted Katsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 | 解决线程池的线程复用导致的变量副本问题 |
|
以上是关于ThreadLocal不同类型tl itl ttl的主要内容,如果未能解决你的问题,请参考以下文章