设计模式-单例模式

单例模式(Single),顾名思义阿。就是这个类的实例(也就是对象),有且只有一个java

这样就能够达到复用的结构,也无需浪费jvm的内存空间。并发

单例模式呢,又分两种.一种是饿汉式加载,另外一种是懒汉式加载。jvm

先上饿汉式加载吧ui

/**
 * 饿汉式加载
 */
public class Quick {
    private static Quick quick = new Quick();
    
    public static Quick getInstance(){
        return quick;
    }
}

下面是懒汉式线程

/**
 * 懒汉式加载
 */
public class Lazy {
    private static Lazy lazy;

    public static Lazy getInstance() {
        if (lazy != null) {//当已经建立过实例了,直接返回
            return lazy;
        } else {
            synchronized (lazy) {
                if (lazy != null) {
                    return lazy;
                } else {
                    lazy = new Lazy();
                    return lazy;
                }
            }
        }

    }
}

相信你们这里看到了代码块,为何这么个写法呢code

1.若是是同步方法的话,那效率很是低.特别是当实例已经建立的状况下(已经不能并发获取了)对象

2.同步代码块里面为啥还要再加个判断呢,这是由于并发的状况下.在实例化的过程当中有多个线程调用了此方法内存

而同步的调用代码块,因此这里须要再加一层判断get

相关文章
相关标签/搜索