2020年4月23日晚上,阿里交叉面时,面试官问到了ConcurrentHashMap中扩容操作的实现原理,瞬间懵逼。当初看源码的时候,这块就没看懂。这次仔细研究了很久,终于看明白啦。
1 | private final void tryPresize(int size) { |
帮助迁移
1 | final Node<K,V>[] helpTransfer(Node<K,V>[] tab, Node<K,V> f) { |
声明nextTable变量的源码如下:
1 | // 只在扩容和迁移数据时被使用 |
迁移操作
1 | private final void transfer(Node<K,V>[] tab, Node<K,V>[] nextTab) { |