单例模式---线程安全且懒汉模式
/** * 单例模式:懒汉式基础上加入并发控制,保证多线程环境下,对外存在一个对象 *1.构造器私有化-->避免外部new构造器 *2.提供私有的静态属性-->存储对象的地址 *3.提供公共的静态方法-->获取属性 */ public class DoubleCheckedLocking { //没有volatile其他线程可能访问一个没有初始化过的对象 //2.提供私有的静态属性 private static volatile DoubleCheckedLocking instance; //1.构造器私有化 private DoubleCheckedLocking(){ } //3.提供公共的静态方法 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 t = new Thread(()->{ System.out.println(DoubleCheckedLocking.getInstance()); }); t.start(); System.out.println(DoubleCheckedLocking.getInstance()); }
早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。