ThreadLocal
作用 让每一个线程都有绑定自己的值。
可重写 initialValue() 方法来默认一个初始化值
InheritableThreadLocal
作用 让子线程可以从父线程中取值
ThreadLocal & Thread & ThreadLocalMap
Threadlocal 是为了使各个线程(Thread)都有一份自己独立的 变量/对象 , 而不是 用来解决共享对象的多线程访问问题的。ThreadLocal将自己的数据存放在ThreadLocalMap中并共享给Thread,即ThreadLocal 与Thread共同拥有 ThreadLocal.ThreadLocalMap值。ThreadLocal会获取Thread中的ThreadLocalMap值,如果没有,会创建一个新的对象并绑定到Thread对象中。
至于为什么不把ThreadLocalMap作为一个集合型Map,而让每个线程单独拥有,个人觉得可能是考虑到gc。如果作为集合Map,无法很好的清理把。如果有知道的麻烦告知一下
参考: https://cloud.tencent.com/developer/article/1393136