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 ?

阅读 3.3k
1 个回答

首先 Entry 并不是一个链表 值是value,key也就是这个弱引用的ThreadLocal对象。多个entry存在数组中。通常我们使用ThreadLocal都是存储当前线程的私有变量,也就是只存一个值,那么为什么还需要一个可以存多个值的数组呢?

ThreadLocal可以定义多个,每个ThreadLocal都有自己私有的线程变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题