如何正确地写出单例模式

如何正确地写出单例模式 | Jark's Blog

枚举方式:

public class SingletonObject {
    private SingletonObject() {
    }

    /**
     * 枚举类型是线程安全的,并且只会装载一次
     */
    private enum Singleton {
        INSTANCE;
        private final SingletonObject instance;

        Singleton() {
            instance = new SingletonObject();
        }

        private SingletonObject getInstance() {
            return instance;
        }
    }

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

《The "Double-Checked Locking is Broken" Declaration》:https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html?spm=ata.21736010.0.0.1dab7536J8dnkS

你可能感兴趣的:(java,单例模式)