
问题:一个thread中存储有一个threadLocalMap,一个map中存储着threadLocal变量,一个thread可以有多个threadLocal变量,一个ThreadLocal变量中可以存储多个值,这理解对吗?
你的理解大部分是正确的,但需要稍作修正和补充。以下是分点解释:
1. Thread 与 ThreadLocalMap 的关系
每个线程(Thread)内部维护一个 ThreadLocalMap 123class Thread { ThreadLocal.ThreadLocalMap threadLocals = null; // 存储线程私有变量}
每个线程(Thread)实例都有一个独立的 ThreadLocalMap,用于存储该线程的所有 ThreadLocal 变量。
此 Map 是懒加载的,首次调用 ThreadLocal.get() 或 set() 时才会创建。
2. ThreadLocalMap 的结构
键(Key)是 ThreadLocal 实例,值(Value)是该 ThreadLocal 在当前线程 ...