單例模式之懶漢式和餓漢式

2021-10-11 14:39:03 字數 937 閱讀 7016

下面對單件模式的懶漢式與餓漢式進行簡單介紹:

1、餓漢式:在程式啟動或單件模式類被載入的時候,單件模式例項就已經被建立。

2、懶漢式:當程式第一次訪問單件模式例項時才進行建立。

如何選擇:

如果單件模式例項在系統中經常會被用到,餓漢式是乙個不錯的選擇。

反之如果單件模式在系統中會很少用到或者幾乎不會用到,那麼懶漢式是乙個不錯的選擇。

//餓漢式單例模式

class singleton

//自己建立乙個類的例項化

private static singleton singleton = new singleton();

//建立乙個get方法,返回乙個例項s

public static singleton getinstance()

//懶漢式單例模式

class singleton

// 自己建立乙個類的例項化

private static singleton singleton;

// 建立乙個get方法,返回乙個例項s

public static singleton getinstance()

return singleton;

}}

懶漢式在多執行緒中是不支援的,所以相對來說,更多的是用餓漢式

比如,現在有 a 執行緒和 b 執行緒,a 執行緒剛好在這個 getinstance()方法中,剛剛判斷完非空(此時為 null),即需要建立例項,然而,就是這麼巧,b 執行緒搶到了 cpu 的執行權,a 執行緒 sleep 了,這時,b 執行緒也進行了這個判斷,和 a 一樣,都需要建立例項,而這時,a 也搶到了 cpu,這時,b 就 sleep 了,然後 a 執行了例項化後,b 又搶到 cpu 執行權,然後 b 也例項化,這時,出現問題了,a 和 b 都例項化了乙個物件,這就是赤果果的兩個物件呀,單例呢,唯一呢,全都沒了。

單例模式之餓漢式和懶漢式

單例模式是什麼 單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項 餓漢式的 實現 public class singleton 返回物件例項 public static singl...

單例模式之餓漢式和懶漢式

餓漢式 在定義變數的同時完成賦值 class singleinstance 第三步 建立乙個靜態的公共的方法,將單例類物件提供出去 public static singleinstance getinstance 功能區 一般建立的是非靜態的成員實現功能 建立成員變數 建立成員方法 懶漢式 clas...

單例模式之懶漢式和餓漢式

什麼是單例模式?單例 模式就是在 jvm中乙個 物件只能 有乙個例項。單例模式有七種寫法,常見的單例模式有兩種 懶漢式 餓漢式 什麼是懶漢式?就是需要的才會去例項化,執行緒不安全。什麼是餓漢式?就是當class檔案被載入的時候就已經初始化,天生執行緒安全。懶漢式寫法 保證這個類在jvm中只有乙個例項...