黑马程序员技术交流社区

标题: JAVA设计模式之懒汉式线程安全DCL双重检查锁 [打印本页]

作者: null_null_null    时间: 2019-9-17 10:13
标题: JAVA设计模式之懒汉式线程安全DCL双重检查锁
public class DLCSingleton {

    private static volatile DLCSingleton mInstance =null; //volatile关键字是为了禁止编译器对 volatile关键字修饰的变量进行重排序,并保证volatile变量的读操作发生在写操作之后

    private DLCSingleton(){

    }

    public static DLCSingleton getmInstance(){
        if(mInstance == null){ //第一次检查
            synchronized (DLCSingleton.class){ //同步代码块
                if(mInstance == null){ //第二次检查
                    mInstance = new DLCSingleton();
                }
            }
        }
        return mInstance;
    }
}
DCL双重检查锁仅在真正创建mInstance实例的时候加上了synchronized关键字。。。而且使用volatile关键字修饰,是为了禁止编译器对volatile变量重排序,并且保证volatile变量的读操作发生在写操作之后。




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