设计模式Singleton Pattern

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinaihalo/article/details/82733685
package singleton;
/**
 * 指令重排序
 * 优化指令,提高程序运行效率。
 * 例如:
 * 分配对象的内存空间、 初始化对象、设置instance指向刚分配的内存地址
 * 后两个可能互换,在多线程下会导致得到未被完全初始化的实例
 *
 */
public class Singleton {
    //1.5 后volatile变量禁止指令重排序
    private static volatile Singleton singleton;
    private Singleton(){}
    //延迟初始化;在方法上加sync会影响性能,只在初始化的时候同步,双重检查加锁(DCL)
    public static Singleton getSingleton(){
        if(singleton==null){
            synchronized (Singleton.class) {
                if(singleton==null)
                    singleton = new Singleton();
            }
        }
        return singleton;
    }
}

more detail:
https://blog.csdn.net/zhangzeyuaaa/article/details/42673245
https://blog.csdn.net/a837199685/article/details/25563727

猜你喜欢

转载自blog.csdn.net/sinaihalo/article/details/82733685
今日推荐