为什么MyThreadLocal里面HashMap里面再嵌套一个HashMap呢

来源:4-1 实现自己的ThreadLocal

慕仔5261457

2020-01-31 17:32

不是很理解为什么HashMap里面要HashMap<Thread,HashMap<Integer,Obkect>>,老师可以说下么

写回答 关注

2回答

  • qq_慕雪7502798
    2020-05-06 21:42:03

    “用两层HashMap是由于一个线程中可能会拥有多个ThreadLocal成员变量,所以内层HashMap是为了保存同一个线程中的不同ThreadLocal变量。”说法不对吧  如果一个线程中有两个ThreadLocal成员变量,那么按照你说的,他们的key是当前线程ThreadLocal值,那不是key冲突了?

  • nmchenmiao
    2020-02-29 14:02:34

    外面的HashMap的Key是ThreadID,Value是内层的HashMap。

    内层的HashMap的Key是当前ThreadLocal对象,Value是当前ThreadLocal的值。

    用两层HashMap是由于一个线程中可能会拥有多个ThreadLocal成员变量,所以内层HashMap是为了保存同一个线程中的不同ThreadLocal变量。

ThreadLocal

设计者视角源码级ThreadLocal分析教你建立线程安全感-你专属的技术优越感

14065 学习 · 32 问题

查看课程

相似问题