请详细讲解单例模式的几种实现方式,并重点分析双重校验锁(DCL)中volatile的作用、可见性原理(MESI协议),以及将synchronized直接加在方法上的锁粒度问题。另外,请说明类加载机制如何实现懒汉式单例。
考察说明
考察Java并发编程、内存模型、类加载机制及设计模式综合理解
回答思路
- 能列举饿汉、懒汉(线程安全/非线程安全)、DCL、静态内部类、枚举等单例实现
- 准确说明DCL中volatile防止指令重排的必要性
- 理解MESI协议与可见性原理
- 指出synchronized加方法上锁粒度大、性能差的问题
- 解释类加载机制实现懒加载的原理
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。