InheritableThreadLocal获取父线程的threadLocal值

1、get () 与 set () 方法

get()

set()

其中我们可以看到两个方法均使用了 getMap 方法来获取 ThreadLocalMap 对象。因此，我们可以推测大概是这个方法导致了 InheritableThreadLocal 能够获取父线程中的值。

2、getMap () 方法

接下来我们对比一下 InheritableThreadLocal 和 ThreadLocal 中 getMap () 方法的区别。

InheritableThreadLocal

ThreadLocal

我们可以发现一个获取了 inheritableThreadLocals，而另一个则获取了 threadLocals。其中 inheritableThreadLocals 会被继承到子线程中，因此可以子线程可以通过该对象访问父线程的 threadLocal 值（相当于线程之间的一个共享变量）。