package cn.jiedada.controller; /** * 懒汉单列模式详细 */ public class A { private A(){ } //volatile防止重排序 private volatile static A instance = null; //synchronized家在方法体中,性能不好 public static A getInstance(){ if (instance==null){ //线程b到这里就判断有内存,走1然后没有初始化 synchronized (A.class){ if (instance==null){ //这个方法会出现指令重排序问题 /** * 正常的顺序为 * 1。给内存分配空间 * 2。初始化对象 * 3。设置instance指向分配内存 */ instance = new A(); //线程a到1,3 } } } return instance; } }