ConcurrentHashMap底层原理分析疑惑

Pack 发布于 2020-03-04 17:42
阅读 884
收藏 0
分类:Java开发

问题描述

如Mic老师所讲,其中,如果链表的长度大于8,并且node数组的长度大于64的时候,如果再添加数据到当前链表中,会把当前链表转化为红黑树。


当出现扩容时,如果链表的长度小于8,把红黑树转化为链表

这里我没有明白为什么会这样,这里出现扩容后,原有的链表长度会减少吗?怎么才能出现红黑树转化为链表的情况?

520
Pack
Pack

扩容后桶上的节点个数会减少,因为映射规则变了,hash & (length -1),length变了,映射的位置可能会改变,长度也会减小,小于一定值就会退化为链表。这里resize()的方法,jdk8较jdk7也做了优化,可以自己去看看

请先 登录 后评论