Java設計模式-單例模式-懶漢式-雙重檢查

  • 2020 年 3 月 17 日
  • 筆記

優缺點說明

1)雙重檢查概念是多執行緒開發中常使用到的,如程式碼中所示,我們進行了兩次if (singleton == null) 檢查,這樣就可以保證執行緒安全了

2)這樣,實例化程式碼只用執行一次,後面再次訪問時,判斷if (singleton == null) ,直接return實際化對象,也避免的反覆進行方法同步

3)執行緒安全、延遲載入、效率較高

4)結論:在實際開發中,推薦使用這種單例設計模式

public class SingletonTest06 {      public static void main(String[] args) {          Singleton06 instance  = Singleton06.getInstance();          Singleton06 instance01 = Singleton06.getInstance();            System.out.println(instance == instance01);          System.out.println("instance,hashCode= " + instance.hashCode());          System.out.println("instance01,hashCode = " + instance01.hashCode());      }  }    class Singleton06 {        private static volatile Singleton06 singleton;        private Singleton06() {      }        public static Singleton06 getInstance() {          if (singleton == null) {              synchronized (Singleton06.class) {                  if (singleton == null) {                      singleton = new Singleton06();                  }              }          }          return singleton;      }  }    // 運行結果  true  instance,hashCode= 1846274136  instance01,hashCode = 1846274136