多執行緒下的單例模式

2021-08-20 09:17:24 字數 992 閱讀 1928

單例模式分為兩種:懶漢單例模式和餓漢式單例模式

public

class singleton

private

static singleton single=null;

public

static singleton getinstance()

return single;

} }

在單執行緒中,這樣寫,不會存在任何問題,但對於android開發來說使用多執行緒來處理問題是很正常的一件事情,所以你的單例也需要支援多執行緒

public

class singleton

private

static singleton single=null;

//雙重檢查,同步鎖

public

static singleton getinstance()

}

}

return singleton;

} }

餓漢單例模式,本身就是執行緒安全。

//初始化類的時候初始化單例物件  

public

class singleton1

private

static final singleton1 single = new singleton1();

public

static singleton1 getinstance()

}

單例模式還可以通過 列舉來實現 由於列舉型別本身特性 自由序列化,執行緒安全,單例 。依據這三個特性,所以列舉本身就可以是單例模式

public

enum singledemo

public

void

method2()

}

多執行緒下的單例模式

在多執行緒下的singleton模式是有弊端的,但如何解決呢?辦法是使用lock機制。今天研究的lock機制,並且順便了解了些關於多執行緒的cpu層面的機制。在單個cpu的環境下,在系統的某一時間下cpu只能做一件事情,乙個時間片 slice 這個是cpu執行最小單位。在系統中有多個程序看起來好像是...

多執行緒 單例模式

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