多執行緒中的單例模式

2021-10-08 09:25:18 字數 1600 閱讀 9945

第一種寫法

//餓漢式

public

class

singleobject1

public

static singleobject1 getinstance()

}

第二種寫法
//懶漢式: 在多執行緒環境下不安全,會產生多個例項!

public

class

singleobject2

public singleobject2 getinstance()

return instance;

}}

第三種寫法
//懶漢式: 在多執行緒環境下不安全,會產生多個例項!

public

class

singleobject3

//通過加鎖的方式,確實可以保證執行緒安全,但是這樣加鎖效率比較低下!

//弊端:就是我只做讀的操作,也得去加鎖,效率比較低!

public

synchronized singleobject3 getinstance()

return instance;

}}

第四種寫法
//懶漢式: 在多執行緒環境下不安全,會產生多個例項!

public

class

singleobject4

//最終使用雙重檢查

//使用volatile可以解決!

public singleobject4 getinstance()

}}return instance;

}}

第五種寫法
public

class

singleobject5

//最終使用雙重檢查

//使用volatile可以解決!

public singleobject5 getinstance()

}}return instance;

}}

第六種寫法
//使用靜態內部類的方式

public

class

singleobject6

private

static

class

instanceholder

public

static singleobject6 getinstance()

}

第七種寫法
//使用列舉來實現單例,很好,但是個人感覺不太優雅,可能是我太菜了!

public

class

singleobject7

private

enum singleton

public singleobject7 getinstance()

}public

static singleobject7 getinstance()

public

static

void

main

(string[

] args)}.

start()

);}}

多執行緒中的單例模式

第一種寫法 餓漢式 餓漢式 public class singleobject1 public static singleobject1 getinstance 第二種寫法 懶漢式 1 迭代一 懶漢式 在多執行緒環境下不安全,會產生多個例項 public class singleobject2 pu...

多執行緒 單例模式

單例模式 是非常典型常用的一種設計模式 乙份資源只能被申 載一次 單例模式的方法建立的類在當前程序中只有乙個例項 資源的程式初始化的時候就去載入,後面使用的時候直接使用,使用的時候比較流暢,有可能會載入用不上的資源,導致程式初始化時間比較慢。include class single instance...

單例模式多執行緒

單例模式 確保某個類只有乙個例項化物件 import time class a from threading import lock instance none lock lock def new cls,args,kwargs 加鎖確保時間片不發生輪轉 with cls.lock ifnot cl...