1、get () 與 set () 方法
-
get()
-
set()
其中我們可以看到兩個方法均使用了 getMap 方法來獲取 ThreadLocalMap 物件。因此,我們可以推測大概是這個方法導致了 InheritableThreadLocal 能夠獲取父線程中的值。
2、getMap () 方法
接下來我們對比一下 InheritableThreadLocal 和 ThreadLocal 中 getMap () 方法的區別。
-
InheritableThreadLocal
-
ThreadLocal
我們可以發現一個獲取了 inheritableThreadLocals,而另一個則獲取了 threadLocals。其中 inheritableThreadLocals 會被繼承到子線程中,因此可以子線程可以通過該物件訪問父線程的 threadLocal 值(相當於線程之間的一個共享變量)。