一:InheritableThreadLocal解决了什么问题?
上文提到了ThreadLocal,但是ThreadLocal有个明显的问题,就是它无法解决父子线程传递问题
于是介绍一种新的ThreadLocal:InheritableThreadLocal
来看看测试用例:

Test
可以看到我在主线程set了一个值,在子线程拿不到它的值,当然,他们是不同的线程,可是对于上下文来说,很多场景是依赖一个共同的限界,而不希望创建子线程就丢掉这个环境,于是我们可以使用InheritableThreadLocal.
二:InheritableThreadLocal使用方式和源码

InheritableThreadLocal用法
如图,可见和上一篇ThreadLocal的用法介绍没什么两样,就是换了个api。
那么它是如何实现父子线程同步的呢。

Thread构造函数
Thread构造里调用了init方法

init方法
init方法内部实现如上图,它会判断inheritableThreadLocals是否为空,如果不空,就拷贝父线程的ThreadLocalMap给子线程。就这么简单,具体代码大家可以自己去研究
项目代码:https://github.com/Spring5945/Concurrent