3.双重检测锁模式
这个模式看起来很好但是由于编译器优化问题和JVM底层不支持,使用时偶尔会出问题,
不建议使用;理解思路就可以,
package java_227_GOF23设计模式_单例模式__双重检查锁式_静态内部类模式_枚举式_UML_类图_练习;
/**
-
双重检查锁式实现单例模式
-
等于null就创建 否则就不用创建 ;只有第一次需要创建以后就不需要创建,提高效率
-
问题:由于底层不支持,所以运行时底层在同步时顺序可能出问题
*/
public class SingletonDemo03 {//单例演示
private static SingletonDemo03 instance = null;//instance实例
public static SingletonDemo03 getInstance(){//getinstance获得实例
if(instancenull){
SingletonDemo03 sc;
synchronized (SingletonDemo03.class) {//synchronized同步的
sc = instance;
if(scnull){
synchronized (SingletonDemo03.class){
if(sc==null){
sc = new SingletonDemo03();
}
}
instance = sc;
}
}
}
return instance;
}
private SingletonDemo03(){}
}