null 时,即能创建成功,结束循环,否则继续自旋
if (casTabAt(tab, i, null,
new Node<K,...}
Node pred = e;
// 将新增的元素赋值到链表的最后...则初始化,完成之后,转2
计算当前桶位是否有值
无,则 CAS 创建,失败后继续自旋,直到成功
有,转3
判断桶位是否为转移节点(扩容ing)
是,则一直自旋等待扩容完成,之后再新增
否,转4
桶位有值...5 transfer - 扩容
在 put 方法最后检查是否需要扩容,从 put 方法的 addCount 方法进入transfer 方法....NCPU : n) < MIN_TRANSFER_STRIDE)
stride = MIN_TRANSFER_STRIDE; // subdivide range
// 如果新数组为空