采纳默认new子线程时,inheritThreadLocals=true;若此时父线程inheritableThreadLocals不为空,则将父线程inheritableThreadLocals传递至子线程。
从ThreadLocalMap可知,子线程将parentMap中的所有记录逐个复制至本身线程。
然而线程池不行,因为会复用线程
TransmittableThreadLocal ,线程池异步之前把以后父线程里的本地变量取出来,而后赋值给Rannable包装类里的capturedRef属性。接下来大概率会在run办法里,将这些捕捉到的值赋给子线程的holder赋对应的TTL值。达到了线程池中上下文传递。TransmittableThreadLocal 继承自inheritThreadLocals。所以默认的new线程也是能够传递的