threadLocal

线程中对ThreadLocal 属性的操作 实际上是对 当前线程的ThreadLocalMap 属性对象的操作,该对象是一个以ThreadLocal 实例为key 的map . 

所以每个线程都有自己单独的ThreadLoacalMap 属性,对其操作也不会影响到其他线程。。

public void set(T value) {
        Thread t = Thread.currentThread();
        ThreadLocalMap map = getMap(t);
        if (map != null)
            map.set(this, value);
        else
            createMap(t, value);
    }

ThreadLocalMap getMap(Thread t) {
return t.threadLocals; //这句是重点, 写的是ThreadLocal 的set 实现上里面执行的 是 Thread.threadLocalMap.set();
}
 
原文地址:https://www.cnblogs.com/zhangchenglzhao/p/9224972.html