public class Singleton {
private static volatile Singleton singleton;
//构造函数设置为private 防止通过其他方式获取实例
private Singleton() {
}
public static Singleton getSingleton() {
if (singleton == null) { //双重检查 提高效率
synchronized (Singleton.class) {
if (singleton == null) {
//用volatile的作用主要在此:禁止指令重排序(防止赋值完之后,可能对象没有完成初始化)
singleton = new Singleton();
}
}
}
return singleton;
}
}
优雅的实现单例-双重检查 和 volatile
最新推荐文章于 2022-05-27 11:19:06 发布