threadLocalMap的entry为什么还要设计成链表的形式
threadlocalmap解决hash冲突是用开放定址法,但是threadlocalmap中node的设计还是
static class Entry extends WeakReference<ThreadLocal<?>> {
/** The value associated with this ThreadLocal. */
Object value;
Entry(ThreadLocal<?> k, Object v) {
super(k);
value = v;
}
}
这样的话这个Entry里面的entry还有什么用吗?
而且这个结构为什么没有key ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先 Entry 并不是一个链表 值是value,key也就是这个弱引用的ThreadLocal对象。多个entry存在数组中。通常我们使用ThreadLocal都是存储当前线程的私有变量,也就是只存一个值,那么为什么还需要一个可以存多个值的数组呢?
ThreadLocal可以定义多个,每个ThreadLocal都有自己私有的线程变量