ThreadLocal的使用及原理解析( 三 )


总结:当使用InheritableThreadLocal创建线程变量时,父线程读写线程变量实际是写入父线程的inheritableThreadLocals中 , 在创建子线程时,会将父线程的inheritableThreadLocals复制给子线程的inheritableThreadLocals,子线程操作此线程变量时,也是读写自己线程的inheritableThreadLocals,这就达到了子线程可以获取父线程ThreadLocal的效果 。
# 其他要点
- 如果使用了线程池,线程是会被复用的,因此线程的threadLocals和inheritableThreadLocals也会复用,在线程池使用ThreadLocal可能会产生一些问题,需要留意;- JDK本身提供创建线程池的方法,是不支持获得父级线程的ThreadLocal变量的 。
【ThreadLocal的使用及原理解析】

推荐阅读