欧吉吉 2021-10-08 10:27 采纳率: 50%
浏览 46

ThreadLocal 底层为什么要使用数组?用链表不可以吗?这里边有什么玄机?

最近在学习ThreadLocal的源码,也看过别人对ThreadLocal源码的一些分析,发现有一些地方看得不太明白,希望大家能解答一下我的疑惑:
1.为什么ThreadLocalMap里的Entry使用数组,不使用链表呢?我记得HashMap里边,也是使用链表来解决hash冲突的
2.ThreadLocal其实是通过设置Thread类里边的threadLocals来实现数据隔离的,为什么不直接使用Thread类呢?

  • 写回答

1条回答 默认 最新

  • 编号灬9527 2021-10-08 16:53
    关注

    第一个主要是解决hash冲突的方式不同,hashmap是链地址,这边看着像线性探测,
    第二个有点意思,如果你直接用Thread,那还是得有个东西存吧,不管啥结构,最起码得支持存储多个数据吧,要是强引用的索引,那不就有可能内存泄漏了

    评论

报告相同问题?

问题事件

  • 创建了问题 10月8日