1 /** 2 * 单例模式-线程不安全懒汉式 3 */ 4 public class SingletonTest03 { 5 public static void main(String[] args) { 6 Singleton instanceOne = Singleton.getInstance(); 7 Singleton instanceTwo = Singleton.getInstance(); 8 // out: true 9 System.out.println(instanceOne == instanceTwo); 10 } 11 } 12 13 //线程不安全懒汉式 14 class Singleton { 15 16 /** 17 * 1.构造器初始化,外部不能new 18 */ 19 private Singleton() { 20 21 } 22 23 /** 24 * 2.本类内部私有化变量。 25 */ 26 private static Singleton instance; 27 28 /** 29 * 3.提供一个公有的静态方法,返回实例对象。 30 * 当使用该方法时,才去创建instance 31 * 即懒汉式 32 */ 33 public static Singleton getInstance() { 34 if(instance == null) { 35 instance = new Singleton(); 36 } 37 return instance; 38 } 39 40 }
懒汉式(线程不安全)
优缺点说明:
1) 起到Lazy Loading的效果,但是只能在单线程下使用。
2) 如果在多线程下,一个线程进入了if(instance == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这是便会产生多个实例。所以在多线程环境下不可使用这种方式。
3)结论:在实际开发中,不要使用这种方式。
原文:https://www.cnblogs.com/tree624/p/13904807.html