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都是單例。單例模式的特點 從系統啟動到終止,整個過程只會產生乙個例項。單例模式常用寫法 懶漢式,餓漢式,註冊式,序...