單例模式 學習手記

2022-03-10 10:33:20 字數 672 閱讀 8486

概述:    

單例模式又稱單件模式,模式用來建立獨一無二的只有乙個例項的物件,並提供乙個全域性訪問點。

經典的單例模式實現:

1public

class singleton

2     

14return instance;

15             }

16         }17}

這種方式存在的缺點是執行緒不安全,當出現多執行緒情況的時候,有多可能出現多個例項。

解決方法是採用lock來限制只能單個執行緒進入:

public

class singleton

}return instance;}}

}通過這樣實現了執行緒安全,不過如果每一次呼叫都需要去lock一次然後判斷是例項是否為null開銷很多,我們可以通過double check 方式減少不不要的開銷。方法如下:

public

class singleton}}

return instance;}}

通過double check 解決執行緒併發問題,同時解決了每次例項的時候都會進行的執行緒加鎖損耗。

單例模式適合於只能有乙個例項而且客戶可以從全域性的訪問點訪問它時

應用場景有:快取,多執行緒併發中需要單個例項,執行緒池等 

單例模式學習

通常情況下我們可以讓乙個全域性變數使得乙個物件被訪問,但不能防止你例項化多個物件,乙個最好的方法就是,讓類自身負責儲存他的唯一例項。這個類可以保證沒有其他例項可以被建立,並且他可以提供乙個訪問該例項的方法。一 經典單例 public class singleton public static sin...

學習單例模式

1 單例模式是怎樣產生的?當想要讓乙個定義類只能例項化乙個物件,則不能對外提供public的構造方法,而是要把構造方法定義為private的,這樣就可以讓定義類自己控制類的例項化。同時,也要對外提供乙個public的方法,用來得到定義類的例項。當然,在定義類的內部需要初始化來建立自身的乙個例項 保證...

單例模式學習

單例模式實現 一.實現雙重校驗鎖 public class singleton public static singleton getsingleton return singleton 特點 通過關鍵字synchronized保證高併發下,初始化物件為單例。缺點效能較差,物件屬性需要volatil...