双重校验单例模式

原创
2019/05/10 10:27
阅读数 138

 

 

单例模式写法有很多种,双重校验

 

 

public class Singleton {

    //jvm类加载机制,静态变量加载方法区,线程公共的
    //volatile关键字来保证可见性、有序性写操作先行发生于后面对这个变量的读操作
    private volatile static Singleton singleton;

    private Singleton() {
    }

    //只初始化一次
    public static Singleton getInstance() {
        if (singleton == null) {
            //多线程并发解决保证原子性
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }

}

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部