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.修改配置 ...