使用持有者类 Bill Pugh Singleton 实现的线程安全延迟初始化

public class Singleton {
    private static class InstanceHolder {
        static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return InstanceHolder.INSTANCE;
    }

    private Singleton() {}
}

这在第一次调用 Singleton.getInstance() 时初始化 INSTANCE 变量,利用语言的线程安全保证进行静态初始化,而无需额外的同步。

这种实现也称为 Bill Pugh 单例模式。 [维基]