Thread、ThreadLocal、ThreadLocalMap关系

Thread、ThreadLocal、ThreadLocalMap关系

 

Thread、ThreadLocal、ThreadLocalMap关系

ImageImage

  •  
    • 当我们为ThreadLocal变量赋值,实际上就是以当前ThreadLocal实例为Key,值为value的Entry往这个ThreadLocalMap中存放

 

 

  • Thread 持有 ThreadLocalMap,是本地变量的「所有者」。
  • ThreadLocalMap 是实际存储数据的容器,key 为 ThreadLocal 实例,是ThreadLocal的内部静态类。
  • ThreadLocal 是操作 ThreadLocalMap 的「工具」,通过它可以安全地向当前线程的 ThreadLocalMap
    中存取数据,实现线程隔离。

 

总结:

  • ThreadLocalMap从字面上就可以看出这是一个保存ThreadLocal对象的map(其实是以ThreadLocal为Key),不过是经过了两层包装的ThreadLocal对象:
  • Image

 

  • JVM内部维护了一个线程版的Map<ThreadLocal,
    Value>(通过ThreadLocal对象的set方法,结果把ThreadLocal对象自己当作Key,放进了ThreadLocalMap中),每个线程要用到这个T的时候,用当前的线程去Map里面获取,通过这样让每个线程都拥有了自己独立的变量,人手一份,竞争条件被彻底消除,在并发模式下是绝对安全的变量。
posted @ 2025-12-03 20:44  扛着音响去化缘  阅读(0)  评论(0)    收藏  举报
Sakana Widget右下角定位