java單例模式幾種實現方式

2021-07-22 15:26:45 字數 1177 閱讀 5837

目錄

單例模式的五種實現方式

1、餓漢式

2、懶漢式

3、double checklock實現單例

4、靜態內部類實現模式

5、列舉類

(執行緒安全,呼叫效率高,但是不能延時載入):

public class imageloader 

public static imageloader getinstance() 

}

一上來就把單例物件建立出來了,要用的時候直接返回即可,這種可以說是單例模式中最簡單的一種實現方式。但是問題也比較明顯。單例在還沒有使用到的時候,初始化就已經完成了。也就是說,如果程式從頭到位都沒用使用這個單例的話,單例的物件還是會建立。這就造成了不必要的資源浪費。所以不推薦這種實現方式。

(執行緒安全,呼叫效率不高,但是能延時載入):

public class singletondemo2 

//方法同步,呼叫效率低

public static synchronized singletondemo2 getinstance()

return instance;

}}

dcl也就是雙重鎖判斷機制(由於jvm底層模型原因,偶爾會出問題,不建議使用):

public class singletondemo5 

public static singletondemo5 newinstance() }}

return singletondemo5;

}}

(執行緒安全,呼叫效率高,可以延時載入)

public class singletondemo3 

private singletondemo3(){}

public static singletondemo3 getinstance()

}

(執行緒安全,呼叫效率高,不能延時載入,可以天然的防止反射和反序列化呼叫)

public enum singletondemo4 

}

如何選用:

-單例物件 占用資源少,不需要延時載入,列舉 好於 餓漢

-單例物件 占用資源多,需要延時載入,靜態內部類 好於 懶漢式

Java單例模式實現方式

public class lazynosafe return instance private lazynosafe 說明 public class lazysafe return instance private lazysafe 說明 public class lazyuseinner publ...

java單例的幾種實現方式

1.懶漢式 執行緒不安全,如果兩個執行緒同時執行到了 if instance null public static singleton getinstance return instance 執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能 public class singleton pub...

單例模式實現的幾種方式

單例模式三個主要特點 1 構造方法私有化 2 例項化的變數引用私有化 3 獲取例項的方法共有。package com.ctl.singleton 懶漢式單例 該模式的特點是類載入時沒有生成單例,只有當第一次呼叫 getlnstance 方法時才去建立這個單例 注意 如果編寫的是多執行緒程式,則不要刪...