單例模式在Java中的7種實現

2021-07-02 01:29:07 字數 1672 閱讀 8580

1.懶漢模式-非執行緒安全

/**

* 懶漢-非執行緒安全

* *@author john

* */

public

class

singleton1

//對外訪問例項的靜態方法

public

static singleton1 getinstance()

return instance;

}}

2.懶漢模式-執行緒安全

/**

* 懶漢-執行緒安全

* *@author john

* */

public

class

singleton2

//對外訪問例項的靜態方法,關鍵字synchronized表示該方法是執行緒同步的

public

static

synchronized singleton2 getinstance()

return instance;

}}

3.餓漢模式-宣告時初始化-執行緒安全

/**

* 餓漢-執行緒安全

* *@author john

* */

public

class

singleton3

// 對外訪問例項的靜態方法

public

static singleton3 getinstance()

}

4.餓漢模式-static塊中初始化-執行緒安全

/**

* 餓漢-執行緒安全-在static塊初始化

* *@author john

* */

public

class

singleton4

// 不允許自己建立例項化

private

singleton4() {}

// 對外訪問例項的靜態方法

public

static singleton4 getinstance()

}

5.靜態內部類-執行緒安全

/**

* 靜態內部類-執行緒安全

* *@author john

* */

public

class

singleton5

// 不允許自己建立例項化

private

singleton5() {}

// 對外訪問例項的靜態方法,通過靜態內部類訪問

public

static

final singleton5 getinstance()

}

6.列舉-執行緒安全

public

enum singleton6

}

7.雙重校驗鎖

public

class singleton7

public

static singleton7 getsingleton() }}

return singleton;

}}

java單例模式的7種寫法

很不錯。懶漢 2種,執行緒安全和執行緒不安全 餓漢 classloader,和static塊變種 雙重校驗鎖,列舉和靜態內部類。幾種之間的區別就是為了避免不同環境下的缺陷。下面就列舉型別的單例模式說明 package com.zoer.src public enum singletonexample...

7種方式實現單例模式

單例模式,即是整個類有且只有乙個類例項,通過這個唯一的例項為全域性提供服務。單例類的構造方法為私有的,通過乙個暴露給外界的獲取例項方法來呼叫私有構造方法,保證例項的唯一性。因為餓漢式單例在類載入時就初始化了唯一的例項 且只會初始化一次,所以,該例項是唯一的,即 執行緒安全的 因此,如果我們想要為例項...

單例模式的7種實現方式

多個執行緒要操作同乙個物件,保證物件的唯一性,例項化過程只例項化一次 解決的思路 在載入類時就例項化乙個物件 public class singleton1 public static singleton1 getintance 特點用這個物件的時候才去例項化 public class hoonsi...