ThreadLocal

2019-10-16  本文已影响0人  泠泉

回顾方式

看源码
RequestContext->ThreadLocal->Thread->ThreadLocal.ThreadLocalMap

自己的归纳

  • Thread中有个属性:
    ThreadLocal.ThreadLocalMap threadLocals = null;
    threadLocals是哈希表,以不同的ThreadLocal实例为key,对应存储我们想要线程隔离的值。
  • threadLocals作为Thread的属性存储于Thread内部,但Thread自己不维护这个属性。其初始值为null,取值赋值皆由ThreadLocal实例去维护,ThreadLocal实例通过Thread.currentThread()找到Thread,进而获取到属于同一个包下的Thread的threadLocals,并以this关键字将自己(ThreadLocal实例)传入到threadLocals中作为key设置或获取对应的值。
  • 所以,每个线程中有一个ThreadLocal.ThreadLocalMap属性,存储着各种不同的ThreadLocal实例,以及这些ThreadLocal实例对应的值。

别人的归纳

上一篇 下一篇

猜你喜欢

热点阅读