单例模式实例

2019-05-24  本文已影响0人  eliteTyc
public class SingletonCheck {

// 防止指令重排序
    private volatile static SingletonCheck instance;

//    1:构造器私有化
    private SingletonCheck(){}
//    2.对外提供获取单例的方法
    public static SingletonCheck getInstance(){
//        3.第一次检查,多个线程可以同时访问
        if (instance==null){
//            4.加锁,每次只有一个线程能访问
            synchronized (SingletonCheck.class){
//                5.再检查
                if (instance==null){
                    instance = new SingletonCheck();
                }
            }
        }
        return instance;
    }
}
public class SingletonCheck2 {
//    1.构造器私有化
    private SingletonCheck2(){}
//    2.写静态内部类
    private static class LayLoad{
        public static final SingletonCheck2 INSTACNE = new SingletonCheck2();
    }
//    3.对外提供方法调用
    public static SingletonCheck2 getInstance(){
        return  LayLoad.INSTACNE;
    }
}
上一篇下一篇

猜你喜欢

热点阅读