DCL單例模式

2021-10-23 03:51:39 字數 466 閱讀 7202

單例模式:外部不能new物件,類的內部有且只有乙個物件,僅僅用乙個靜態方法與外界進行互動。

public

class

doublecheckedlocking

//外部只能通過這個get方法和此物件進行交流

public

static doublecheckedlocking getinstance()

//繫結class物件解決延時導致更新不及時而建立多個物件的問題

synchronized

(doublecheckedlocking.

class

)return instance;}}

public

static

void

main

(string[

] args)).

start()

;}}

dcl單例模式

有時候我們需要對外呈現只有乙個物件,簡單來說就是講物件私有化,像資料那樣,只能通過get方法得到。這裡使用doublechecking來進行該操作,即在get方法裡面加入兩個判斷該物件是否為空,同時為了避免指令重排導致執行緒獲得空物件,加入volatile,而且私有化構造器。public class...

單例模式的DCL問題

剛剛寫完靜態 塊問題,突然想到之前單例模式的坑,雖然解決辦法知道了,但是之前的原理不太明白,剛剛突然想清楚了。感謝大神 餓漢式 class single 私有化建構函式。private static single s new single 建立私有並靜態的本類物件。public static sin...

多執行緒 DCL單例模式

package others dcl單例模式 懶漢式套路基礎上加入併發控制,保證在多執行緒環境下,對外存在乙個物件 1 構造器私有化 避免外部new構造器 2 提供私有的靜態屬性 儲存物件的位址 3 提供公共的靜態方法 獲取屬性 author public class doublecheckedlo...