Telegram開源專案之單例模式

2021-07-29 23:16:23 字數 573 閱讀 7294

public

class notificationcenter }}

return localinstance;

}}

這種單例模式是採用雙重校驗鎖的執行緒安全的單例模式。是效率最好的安全性最好的一種寫法

instance加上了volatile關鍵字確保了多執行緒環境下防止重排序,避免在多執行緒環境下例項化notificationcenter物件時得到的引用時未初始化的。

例項化乙個物件其實可以分為三個步驟:

(1)分配記憶體空間。

(2)初始化物件。

(3)將記憶體空間的位址賦值給對應的引用。

但是由於作業系統可以對指令進行重排序,所以上面的過程也可能會變成如下過程:

(1)分配記憶體空間。

(2)將記憶體空間的位址賦值給對應的引用。

(3)初始化物件

如果是這個流程,多執行緒環境下就可能將乙個未初始化的物件引用暴露出來,從而導致不可預料的結果。因此,為了防止這個過程的重排序,我們需要將變數設定為volatile型別的變數。

單例模式之列舉單例

列舉也是餓漢式。列舉單例 問題1 列舉單例是如何限制例項個數的 反編譯後可以看到 就是我們列舉類的乙個靜態成員變數而已,單例項的 問題2 列舉單例在建立時是否有併發問題 沒有,因為它也是靜態成員變數,它的執行緒安全性也是在類載入階段完成的。那個時候不會有執行緒併發問題 問題3 列舉單例能否被反射破壞...

單例模式 之 單例模式 Holder

之前我寫過 單例模式中的餓漢模式和懶漢模式 他們雖然都能實現單例模式 但是優缺點很明顯 餓漢模式 不能懶載入 類載入就會被例項化 消耗很大,在併發情況下安全性很高。懶漢模式 能實現懶載入,但是在併發情況下安全性不是很高。雖然一步一步的優化,安全性得到了保證,但是卻使用了synchronized 對效...

PHP開源專案之YOURLS

yourls是乙個開源的php的程式,可以利用它來構建屬於自己的url縮短服務,yourls還可以整合到wordpress部落格中使用。yourls 的主要功能 公開的 public 任何人都可以用它建立短連線 或者私有的 private,只能你自己使用 可以隨機 順序的 或者自定義。2.修改配置 ...