黑马程序员技术交流社区

标题: JAVA设计模式之懒汉式 [打印本页]

作者: null_null_null    时间: 2019-9-17 10:09
标题: JAVA设计模式之懒汉式
public class LazySingleton {//缺点,多线程并发的时候会失效,getmInstance不同步,例子:一个线程在创建mInstance时,还未创建完成,另一个线程访问mInstance此时还是为空,又创建了一次

    private static LazySingleton mInstance;

    private LazySingleton(){

    }

    public static LazySingleton getmInstance(){
        if(mInstance == null){
            mInstance = new LazySingleton();
        }
        return mInstance;
    }
}
懒汉式进行了延迟加载,在调用getmIntance方法时才会去判断mInstance是否为空,如果为空,再去进行实例的创建。。但是在多线程操作的时候,可能会创建多个mInstance实例,比如在以下情况下:一个线程在创建mInstance实例时,mInstance实例还未创建完成,但是另外一个线程会去访问mInstance发现此时mInstance还是为空,这个时候该线程又会去再次创建一个mInstance实例,最后会有多个mInstance实例被创建,导致资源的浪费。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2