C 學習 關於懶漢式和餓漢式單例

2021-08-20 21:49:00 字數 526 閱讀 9414

1. eager singleton(餓漢式單例類),其靜態成員在類載入時就被初始化,此時類的私有建構函式被呼叫,單例類的唯一例項就被建立。

class eagersingleton

public static eagersingleton getinstance()

}

2. lazy singleton(懶漢式單例類),其類的唯一例項在真正呼叫時才被建立,而不是類載入時就被建立。所以lazy singleton不是執行緒安全的。

class lazysingleton

private static lazysingleton instance = null;

public static lazysingleton getinstance()

}

注意:不管是懶漢還是餓漢,其建構函式必須私有,以防多個例項被建立。另外,用懶漢式單例在多執行緒環境中需要其他的保護措施來保證只有單例被建立,因為可能有多個執行緒同時呼叫getinstance()。

餓漢式單例和懶漢式單例

當我們想要乙個類只產生乙個例項化物件時,就需要用到單例模式,單例設計模式分為兩種 餓漢式和懶漢式。1 餓漢式單例 當用到這個類時,不管是否需要乙個物件都會建立乙個例項化物件 public class singleton public static singleton getinstance publ...

餓漢式單例和懶漢式單例比較

餓漢式單例 public class singleton public static singleton getinsance 懶漢式單例 public class singleton 必須加同步關鍵字synchronized,為了避免多執行緒同時訪問時,建立多個例項 public synchron...

單例模式 懶漢式 和 餓漢式

單例模式三要素 a 私有構造方法 這樣外界就沒辦法建立物件 b 私有靜態引用指向自己例項 c 以自己例項為返回值的公有靜態方法 對外暴露介面獲取例項 在spring中建立的bean例項預設都是單例模式存在的。所謂 懶漢式 與 餓漢式 的區別,是在與建立單例物件的時間不同。懶漢式 是在你真正用到的時候...