DCL单例模式:单例+多线程

/*
DCL单例模式 懒汉式 在多线程环境下 对外存在一个对象
构造器私有化
提供私有的静态属性
提供公共的静态方法 获取属性
*/
public class DoubleCheckedLocking {
//提供私有的静态属性 解决指令重排
private static volatile DoubleCheckedLocking instance;
//构造器私有化
private DoubleCheckedLocking(){

}
//提供一个公有方法创建对象
public static DoubleCheckedLocking getInstance(){
//再次检测
if (null != instance) {
return instance;
}
synchronized (DoubleCheckedLocking.class) {
if (null == instance) {
instance = new DoubleCheckedLocking();
//1。开辟空间 2,初始化对象信息 3。返回对象的地址给引用
}
}
return instance;
}
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println(DoubleCheckedLocking.getInstance());
});
thread.start();
System.out.println(DoubleCheckedLocking.getInstance());
}
}
原文地址:https://www.cnblogs.com/yxj808/p/15180722.html