课程
/后端开发
/Java
/ThreadLocal
不是很理解为什么HashMap里面要HashMap<Thread,HashMap<Integer,Obkect>>,老师可以说下么
2020-01-31
源自:ThreadLocal 4-1
正在回答
“用两层HashMap是由于一个线程中可能会拥有多个ThreadLocal成员变量,所以内层HashMap是为了保存同一个线程中的不同ThreadLocal变量。”说法不对吧 如果一个线程中有两个ThreadLocal成员变量,那么按照你说的,他们的key是当前线程ThreadLocal值,那不是key冲突了?
外面的HashMap的Key是ThreadID,Value是内层的HashMap。
内层的HashMap的Key是当前ThreadLocal对象,Value是当前ThreadLocal的值。
用两层HashMap是由于一个线程中可能会拥有多个ThreadLocal成员变量,所以内层HashMap是为了保存同一个线程中的不同ThreadLocal变量。
举报
设计者视角源码级ThreadLocal分析教你建立线程安全感-你专属的技术优越感
1 回答您说hashMap是static 的 用MythreadLocal作为Key,会导致内存无法回收
1 回答MyThreadLocal内存回收疑惑?
4 回答为啥大面积变小面积了,为啥这里就不会有很大的性能开销
3 回答Integer为什么不是引用类型呢?
1 回答有点疑惑,那个Val呗初试成0了, 为什么set还可以add值呢