https://blog.csdn.net/chunqiuwei/article/details/100707124
ThreadLocal即线程局部变量的意思!所以什么是线程局部变量?这玩意有什么鸟用?是不是面试被问到了说不出个一二三?今天就来扒一扒这货的源码,从根本上了解这货是干啥的。
Thread ,ThreadLocalMap,Entry三者关系
其实研究下来他的源码实现,其实也没想象的那么复杂,其最主要有以下几点:
1、Java可以通过Thread.currentThread()来获得当前的Thread的实例对象。既然能拿到这Thread对象实例,那么我们就可以操作该实例(的属性),比如为该Thread对象设置一个值什么。
2、每一个Thread对象都有一个ThradLocalMap实例,该实例有一个一个Entry组成的数组,Entry对象有两个主要属性:value和ThreadLocal的弱引用,其中value这个属性就是值设置给当前线程所持有,也是ThreadLocal的核心属性:
static class Entry extends WeakReference<ThreadLocal<?>> {
/** The va