3.双重检测锁模式
这个模式看起来很好但是由于编译器优化问题和JVM底层不支持,使用时偶尔会出问题,
不建议使用;理解思路就可以,
java_227_GOF23设计模式_单例模式__双重检查锁式_静态内部类模式_枚举式_UML_类图_练习1(双重检查锁式)
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(sc
    null){
    synchronized (SingletonDemo03.class){
    if(sc==null){
    sc = new SingletonDemo03();
    }
    }
    instance = sc;
    }
    }
    }
    return instance;
    }
    private SingletonDemo03(){

    }
    }

相关文章: