Java Language使用holder类的线程安全的惰性初始化 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() {}
}

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

此实现也称为Bill Pugh单例模式。[Wiki]