實現單例模式的五種方法

2021-07-03 03:37:30 字數 841 閱讀 7520

二、懶漢式

懶漢式與餓漢式的區別:

餓漢模式的特點是載入類時比較慢,但執行時獲取物件的速度比較快;執行緒安全

懶漢模式的特點是載入類時比較快,但執行時獲取物件的速度比較慢;執行緒不安全

三、第三種也叫雙重鎖檢測

這個模式將同步內容放到if內部,提高了執行的效率,不必每次獲取物件時都進行同步,只有第一次同步。

這中方式也有一定的問題:由於編譯器優化原因和jvm底層內部模型原因,偶爾可能會出問題。

**:public class singleton3 }

instance = sc; }

} }return instance;}

private singleton3(){} }

四、靜態內部類

public class singleton4

private static final singletondemo instance = new singletondemo();

public static singletondemo getinstance()}}

這種方法由於外部類沒有static屬性,則不會像餓漢式那樣立即載入物件,只有真正呼叫getinstance(),才會載入靜態內部類,載入時執行緒安全的。

優勢是併發搞笑呼叫和延遲載入。

五、用列舉實現單例模式

列舉本身就是單例模式,由jvm從根本上提供保障,但是無法延遲載入

public enum singleton5 }

以上就是單例的五種實現方式。

除過第三種:其它四種比較可以發現:

占用資源少,不需要延時載入:列舉好於餓漢

占用資源大,需要延時載入:靜態好於懶漢。

單例模式實現的五種方法

測試餓漢式單例模式 author carlosxu public class hungrysingleton 方法不用同步,呼叫效率高 public hungrysingleton getinstance 測試懶漢式單例模式 author carlosxu public class lazysing...

五種單例模式實現

public class hunger private final static hunger hunger newhunger public static hunger getinstance 多個執行緒安全,但無法進行懶載入,如果類成員很多,則占用的資源比較多 public class lazy...

七種方法實現單例模式

三 懶漢式應用例項 四 雙重檢查 推薦使用 五 靜態內部類 推薦使用 六 列舉 推薦使用 所謂類的單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法 靜態方法 比如hibernate的sessionfactory,它充當資料儲...