单例设计模式

package com.lgh.others;
/**
 * DCL单例模式:懒汉式套路基础上加入并发控制,保证在多线程环境下,对外存在一个对象
 * 1、构造器私有化-->避免外部new构造器
 * 2、提供私有的静态属性-->存储对象的地址
 * 3、提供公共的静态方法-->获取属性
 * @author Mr Lu
 *
 */
public class  DoubleCheckdedLocking {
 // 2、提供私有的静态属性
 private static volatile DoubleCheckdedLocking instance;
 // 没有volatile其他线程可能访问一个没有初始化的对象
 // 1、构造器私有化
 private DoubleCheckdedLocking() {
  
 }
 public static DoubleCheckdedLocking getInstance() {
  // 再次检测
  if (null != instance) {// 避免不必要的同步,已经存在对象
   return instance;
  }
  synchronized (DoubleCheckdedLocking.class) {
   if (null == instance) {
    instance = new DoubleCheckdedLocking();
    // 1、开辟空间 // 2、初始化对象信息 // 3、返回对象的地址给引用
   }
  }
  return instance;

 }
 public static void main(String[] args) {
  Thread thread = new Thread(()->{
   System.out.println(DoubleCheckdedLocking.getInstance());
  });
  thread.start();
  System.out.println(DoubleCheckdedLocking.getInstance());
 }
 
}

posted on 2019-01-28 20:56  青稞靓仔  阅读(107)  评论(0)    收藏  举报