ConcurrentHashMap 扩容原理、transfer 线程安全

校校

11-12 浏览 4 收藏 0

ConcurrentHashMap 扩容原理,多线程环境下如何保证迁移线程安全?

校校建议

JDK1.8 的 CHM 扩容支持多线程协助迁移;

transfer 负责将旧桶数据迁移到新数组。

通过 forwardingNode 标记已经迁移完成的桶,多个线程争抢不同桶,使用 CAS 保证桶的迁移互斥;

迁移完成的桶打上标记,其他线程不会重复处理。