既然 ConcurrentHashMap 用到了 synchronized 关键字和 CAS,为什么还要加上 volatile 关键字呢,非加不可吗?
考察说明
考察对 volatile 内存语义在并发容器中必要性的理解
回答思路
- 指出 volatile 用于保证可见性与禁止指令重排序
- 结合节点数组或 Node 的 val/next 字段说明用途
- 解释 synchronized 与 CAS 不能完全替代 volatile 的原因
- 能说明不加 volatile 可能导致的可见性或结构破坏风险
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。