1、get () 与 set () 方法
-
get()
-
set()
其中我们可以看到两个方法均使用了 getMap 方法来获取 ThreadLocalMap 对象。因此,我们可以推测大概是这个方法导致了 InheritableThreadLocal 能够获取父线程中的值。
2、getMap () 方法
接下来我们对比一下 InheritableThreadLocal 和 ThreadLocal 中 getMap () 方法的区别。
-
InheritableThreadLocal
-
ThreadLocal
我们可以发现一个获取了 inheritableThreadLocals,而另一个则获取了 threadLocals。其中 inheritableThreadLocals 会被继承到子线程中,因此可以子线程可以通过该对象访问父线程的 threadLocal 值(相当于线程之间的一个共享变量)。