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