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