懶漢式和餓漢式

2021-08-17 12:07:18 字數 909 閱讀 5252

餓漢式

public class hungrysingle 

//2.在類中建立乙個類的例項,私有化,靜態的

private static final hungrysingle hs = new hungrysingle();

// 3.通過公共方法呼叫,此公共方法只能類呼叫,因為設定了 static

public static hungrysingle geths()

}

懶漢式

方式一:不加鎖的,所以執行緒不安全

public class lazysingle 

//延時建立

private static lazysingle ls = null;

//通過公共方法呼叫 static 在方法裡面進行判斷,if = null,例項化 !=null 直接return

public static lazysingle getlazysingle()

return ls;

}

方式二:加鎖,保證執行緒安全

public class lazysingle 

//延時建立

private static lazysingle ls = null;

//加鎖是為了保證執行緒的安全防止建立多個物件

public static lazysingle getlazysingle() }}

return ls;

}}

方法二中,我們能夠看出鎖也可以加在public staticlazysingle getlazysingle() {}中,但是如果加在方法中那麼每次呼叫都會判斷鎖的歸屬權,尤其在迴圈中,很影響效率,所以要加在第二個if外面。

餓漢式和懶漢式

先回顧一下餓漢式單例的寫法 餓漢式 class single public int getage 自定義構造方法 private single 自定義乙個物件 static single s new single public static single getinstance 餓漢式 先初始化物件...

餓漢式懶漢式

這個是先初始化物件。稱為 餓漢式。single類一進記憶體,就已經建立好了物件。class single 私有化構造方法使得該類無法在外部通過new 進行例項化 public static single getinstance 物件是方法被呼叫時,才初始化,也叫做物件的延時載入。成為 懶漢式。sin...

設計模式 餓漢式 懶漢式

單例設計模式 確保乙個類中有且僅有乙個例項並為他提供乙個全域性訪問點。具體實現 1.將建構函式私有化。2.在類中建立乙個本類物件。3.提供乙個方法可以獲取到該物件。2.1餓漢式 single類一進記憶體,就已經建立好了物件。class single private static single s n...