LongAdder的longAccumulate方法中rehash机制的必要性是什么?

LongAdder类longAccumulate方法的rehash机制详解

LongAdder的longAccumulate方法利用rehash机制来提升并发性能。该方法使用CAS (比较并交换) 操作更新数值。如果CAS操作失败,则需要rehash

方法中,如果检测到索引为((n - 1) & h)的Cell为空,会检查cellsBusy变量是否为0。非零值表示CAS锁已被占用。 持续循环尝试获取锁会导致效率低下。

为避免此问题,longAccumulate方法执行rehash,调用advanceProbe(h)重新计算散列值h,从而将插入位置转移到另一个槽位。此机制提高了获取锁的概率,减少

了冲突。

即使((n - 1) & h)位置的Cell为空,由于存在锁获取失败的可能性,rehash仍然必要,以确保插入操作的高效性和成功率。