《Java Concurrency in Practice》作者Brian Goetz在书中提到关于DCL的观点:促使DCL模式出现的驱动力(无竞争同步的执行速度很慢,以及JVM启动时很慢)已经不复存在,因而它不是一种高效的优化措施。延迟初始化占位类模式(静态内部类)能带来同样的优势,并且更容易理解。
静态内部类(延迟初始化)
public class Singleton {
//私有化构造方法
private Singleton(){}
//静态内部类(被调用时加载)
private static class SingletonHandle {
private static final Singleton instance = new Singleton();