天天看點

Java 單例模式

代碼:

雙重檢查,懶漢模式

優點:使用了雙重檢查,很大程度上避免了線程不安全,同時也避免了不必要的鎖開銷。這裡要注意,雖然未使用​<code>​volatile​</code>​關鍵字,但是這裡的​<code>​synchronized​</code>​已經保證了​<code>​instance​</code>​寫操作對其它線程讀操作的可見性。

缺點:性能開銷有點大

靜态常量,餓漢模式

優點:實作簡單,無線程同步問題

缺點:在類裝載時完成執行個體化。若該執行個體一直未被使用,則會造成資源浪費

靜态代碼塊,餓漢模式

跟上面的基本一樣。

靜态内部類,懶漢模式(感覺最好的一個)

優點:無線程同步問題,實作了懶加載(lazy loading)。因為隻有調用​<code>​getinstance​</code>​時才會裝載内部類,才會建立執行個體

繼續閱讀