java的單例模式

2021-07-15 19:43:49 字數 1383 閱讀 7059

單例模式核心作用:保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點

單例模式的優點:由於單例模式只生成乙個例項,減小了系統的開銷,當乙個物件的產生需要比較多的資源時,如讀取配置產生其他依賴物件時,則可以通過在應用啟動時直接產生乙個單例物件,然後永久駐留記憶體的方式來解決。

主要的單例模式有餓漢式、懶漢式、靜態內部類式單例模式。

其中餓漢式模式**為:

package com.餓漢式模式;

/** 特點:執行緒安全,呼叫效率高,但不能延遲載入

* 優點:餓漢式單例模式**中,static變數會在類裝載時初始化,

*      此時也不會涉及到多個執行緒物件同時訪問該物件的問題,

*      虛擬機器保證只會裝載一次該類,肯定不會發生併發訪問的問題,

*      因此可以省略synchrnized關鍵字

* 缺點:如果只是載入本類,而沒有使用getinstance方法獲取該類的物件

*      甚至永遠沒有使用到該類的話,則會造成資源的浪費

* */

public class singletondemo

//可以省略synchronized

//因為方法沒有同步,所以呼叫效率高

public static /*synchronized*/ singletondemo getintence()

}懶漢模式為:

package com.懶漢式模式;

/**特點:執行緒安全,執行效率不高,但可以實現延遲載入

*資源利用率高,但getintance方法併發效率低**/

public class singletondemo

//為了保證執行緒安全,要在getintance方法前加上synchronized修飾,實現執行緒同步

//因為加上了synchronized同步,所以執行效率低

public static synchronized singletondemo getintance()

return intance;}}

靜態內部類模式為:

package com.靜態內部類式模式;

/** 特點:外部類沒有static屬性,不會像餓漢式模式一樣類載入時就初始化物件

* 只有真正呼叫getintance方法時才會載入靜態內部類

* 載入類是執行緒安全的

* ntance是 static final的,保證了記憶體中只有這樣乙個例項,而且只能被賦值一次。

* 所以是執行緒安全的

* 兼併了併發高效呼叫和延遲載入的優勢

*/public class singletondemo

public static singletondemo getintance()

private singletondemo()

}

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...