開始復習設計模式,一開始理解單例模式中的雙重校驗鎖卡住了,想通了后就自己做了段思維導圖來幫助自己理解。
其實理解下來並不難,但還是記錄下來幫助自己回憶和借機試試養成寫博客的習慣~
public class Singleton { private volatile static Singleton uniqueInstance; private Singleton() { } public static Singleton getUniqueInstance() { if (uniqueInstance == null) { synchronized (Singleton.class) { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } }
這是懶漢模式下雙重校驗鎖下的簡單代碼
public class Singleton { private volatile static Singleton uniqueInstance; private Singleton() { } public static Singleton getUniqueInstance() { if (uniqueInstance == null) { synchronized (Singleton.class) { uniqueInstance = new Singleton(); } } return uniqueInstance; } }
懶漢模式下非雙重校驗鎖下的簡單代碼
差別在於第二個if判斷能攔截第一個獲得對象鎖線程以外的線程。
筆者順便做了張思維導圖截圖,模板可能選得不好,還是要多練練哈。