Java设计模式-单例模式-懒汉式(线程不安全)

  • 2020 年 3 月 17 日
  • 筆記

优缺点说明

1)起到了lazy loading的效果,但是只能在单线程下使用

2)如果在多线程下,一个线程进入了 if(singleton == null)判断语句块,还没有来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例,所以在多线程环境下不可使用这种方式

3)在实际开发种,不要使用这种方式

public class SingletonTest02 {      public static void main(String[] args) {          Singleton02 instance  = Singleton02.getInstance();          Singleton02 instance01 = Singleton02.getInstance();            System.out.println(instance == instance01);          System.out.println("instance,hashCode = " + instance.hashCode());          System.out.println("instance01,hashCode = " + instance01.hashCode());        }  }    class Singleton02{      private static Singleton02 singleton;      private Singleton02(){}      public static Singleton02 getInstance(){          if(singleton == null){              singleton = new Singleton02();          }          return singleton;      }  }    // 运行结果  true  instance,hashCode = 1846274136  instance01,hashCode = 1846274136