如何正确地写出单例模式
如何正确地写出单例模式 | 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