线程中对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();
}