最近在学习ThreadLocal的源码,也看过别人对ThreadLocal源码的一些分析,发现有一些地方看得不太明白,希望大家能解答一下我的疑惑:
1.为什么ThreadLocalMap里的Entry使用数组,不使用链表呢?我记得HashMap里边,也是使用链表来解决hash冲突的
2.ThreadLocal其实是通过设置Thread类里边的threadLocals来实现数据隔离的,为什么不直接使用Thread类呢?
第一个主要是解决hash冲突的方式不同,hashmap是链地址,这边看着像线性探测,
第二个有点意思,如果你直接用Thread,那还是得有个东西存吧,不管啥结构,最起码得支持存储多个数据吧,要是强引用的索引,那不就有可能内存泄漏了