ThreadLocalMap是不是存储了很多个ThreadLocal对象?
来源:2-2 Spring Security常用权限拦截器讲解

北斗神拳1984
2018-07-12
在set方法的代码里是把ThreadLocal对象作为key存在ThreadLocalMap里,是不是可以理解为只有一个ThreadLocalMap对象里存储了很多个ThreadLocal对象,那第一条获取到的currentThread的作用是什么,和ThreadLocal的关系是什么呢?
写回答
1回答
-
这是ThreadLocal和ThreadLocalMap的关系图,可以看到,一个线程Thread中存在一个ThreadLocalMap,ThreadLocalMap中的key对应ThreadLocal,在此处可见Map可以存储多个key即(ThreadLocal)。另外Value就对应着在ThreadLocal中存储的Value。因此总结出:每个Thread中都具备一个ThreadLocalMap,而ThreadLocalMap可以存储以ThreadLocal为key的键值对。这里解释了为什么每个线程访问同一个ThreadLocal,得到的确是不同的数值。
112018-07-13
相似问题