單例模式懶漢式與餓漢式區別與優化

2021-10-12 08:41:32 字數 1177 閱讀 8503

public

class

singletoneh

// 2.內部提供乙個當前類的例項

// 4.此例項也必須靜態化

private

static singletoneh singleeh =

newsingletoneh()

;// 3.提供公共的靜態的方法,返回當前類的物件

public

static singletoneh getinstance()

}

public

class

singletonlh

// 2.內部提供乙個當前類的例項

// 4.此例項也必須靜態化

private

static singletonlh singlelh;

// 3.提供公共的靜態的方法,返回當前類的物件

public

static singletonlh getinstance()

return singlelh;

}}

資源載入和效能:

餓漢式在類建立的同時就例項化乙個靜態物件出來,不管之後會不會使用這個單例,都會佔據一定的記憶體,造成記憶體洩漏,但相應的,在第一次呼叫時速度也會更快。

懶漢式會延遲載入,載入前不占用記憶體,在第一次使用該單例的時候才會例項化物件,且第一次呼叫時要做初始化,如果要做的工作比較多,效能上會有些延遲,之後就和餓漢式一樣了。

解決餓漢式執行緒不安全問題

public

class

singletonlh

// 2.內部提供乙個當前類的例項

// 4.此例項也必須靜態化

private

static singletonlh singlelh;

// 3.提供公共的靜態的方法,返回當前類的物件

public

static

synchronized singletonlh getinstance()

return singlelh;

}}

​ 在靜態方法上加上關鍵字synchronized,可以現實執行緒安全。

單例模式 懶漢式與餓漢式

什麼是單例設計模式 保證這個類的物件永遠有且只有乙個。單例設計模式有兩種 見如下兩種宣告方式 1.懶漢式 設計單例模式 懶漢式 先建立乙個私有的靜態物件 private static user user 建立乙個私有的構造方法 private user 建立乙個公有的靜態的返回物件的方法,需要判斷 ...

單例模式 懶漢式與餓漢式

1 簡述 單例模式 singleton pattern 是一種常用的設計模式,它屬於建立者模式。單例模式只允許有乙個例項,通過建構函式私有化的方式隱藏物件建立入口,取而代之的是提供公共介面用於獲取類的單例。其應用場景廣泛,例如建立管理類 只需要乙個管理實體 或者應用於物件需要限定唯一性的場景等。注意...

單例模式 懶漢式與餓漢式

單例模式屬於建立型模式的一種,應用於保證乙個類僅有乙個例項的場景下,並且提供了乙個訪問它的全域性訪問點,如spring中的全域性訪問點beanfactory,spring下所有的bean都是單例。單例模式的特點 從系統啟動到終止,整個過程只會產生乙個例項。單例模式常用寫法 懶漢式,餓漢式,註冊式,序...