java單例模式懶漢和餓漢

2021-08-24 17:51:44 字數 1117 閱讀 5993

實現:

1 公開靜態的對外訪問方法

2 私有的構造方法(保證不被外部呼叫)

3 類載入時候建立物件

餓漢式:

public class instance1 

} private static instance1 d = new instance1();

private instance1()

public static instance1 getinstance1()

}

懶漢式:

public class instance2 

} private static instance2 d = null;

private instance2()

public static instance2 getinstance2()

return d;

}}

懶漢式餓漢式有什麼區別:

餓漢式在類載入的時候物件就已經new出來,對記憶體開銷比較大,不建議這樣使用。

懶漢式單執行緒下執行緒安全,一定是單例模式。

在多執行緒下一定就是安全的嗎? 那可不一定?

ab兩個執行緒同時在d==null這行**位置時,容易產生兩個物件,這樣子無法保證單例模式了,所以應該採用加鎖的方式進行同步。

public static  synchronized  instance2 getinstance2() 

return d;

}

以上**,ab執行緒同時進入,必須等待乙個執行緒釋放之後另乙個執行緒才能進入鎖,這樣子**不是很高效(如果有乙個執行緒一直處於未釋放鎖,那另乙個執行緒會一直處於等待狀態),所以採用雙重鎖進行判斷。

public class instance2 

} private static instance2 d = null;

private instance2()

public static instance2 getinstance2()

}} return d;

}}

java 單例模式 懶漢和餓漢

確保乙個類只有乙個例項,並提供乙個全域性訪問點。package wfb.pattern public class singleton public static singleton getinstance return instance package wfb.pattherntest import...

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

在類載入的時候不被初始化,類載入快.有執行緒安全問題,需要在 getinstance 方法加 synchronize 鎖.public class lazy 建立乙個私有的物件,但是不進行初始化 private static lazy lazy 得到自己的例項,判斷是否為空,為空則建立 public...

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

單例模式 是一種常用的軟體設計模式,在它的核心結構中值包含乙個被稱為單例的特殊類。乙個類只有乙個例項,即乙個類只有乙個物件例項。餓漢單例模式 public class singletondemo5 private singletondemo5 public static final singleto...