问答详情
源自:4-1 实现自己的ThreadLocal

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

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

提问者:慕仔5261457 2020-01-31 17:32

个回答

  • 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变量。