1 /* 2 * 单例模式 3 */ 4 /*第一种写法//先初始化对象,成为:饿汉式(原则:定义时,建议用) 5 * 已经创建了对象 6 class Single { 7 private static Single s = new Single(); 8 9 private Single() { 10 } 11 12 private static Single getInstance() { 13 return s; 14 } 15 16 }*/ 17 //第二种写法,对象被调用时,才初始化(才创建对象),也叫做对象的延时加载,也叫做:懒汉式(面试多见) 18 class Single { 19 private static Single s = null; 20 21 private Single() { 22 } 23 24 private static synchronized Single getInstance() {//synchronized同步 25 26 if (s == null) 27 //--》a 28 //--》b 29 s = new Single(); 30 return s; 31 /**解决方案 32 * if(s == null){ 33 * synchronized(Single.class){//加锁 34 * if(s == null) 35 * s = new Single(); 36 * } 37 * } 38 * return s; 39 */ 40 } 41 42 } 43 44 public class SingleDome { 45 46 public static void main(String[] args) { 47 48 } 49 50 }