请说明单例模式的常见实现,并解释双重检查锁中第二次检查为何仍需加锁,以及属性为什么需要 volatile 修饰,最后说明 volatile 的底层原理。
考察说明
考察并发环境下单例实现、锁语义与内存可见性理解
回答思路
- 正确列举懒汉、饿汉、双重检查锁、静态内部类、枚举等实现
- 解释双重检查中第二次判空在于实例可能尚未完成初始化或并发下重复创建
- 准确说明 volatile 防止指令重排与保证可见性
- 能说明 volatile 基于内存屏障的原理
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。