單例模式 單例模式

2022-06-08 20:03:12 字數 754 閱讀 7904

餓漢式(急切例項化)

public

class

eagersingleton

/**2.宣告靜態成員變數並賦初始值-類初始化的時候靜態變數就被載入,因此叫做餓漢式

*/public

static eagersingleton eagersingleton=new

eagersingleton();

/**3.對外暴露公共的例項化方法

*/public

static

eagersingleton getinstance()

}

懶漢式(延遲例項化)(dcl雙重檢測)

-為什麼要判斷兩次?  

避免由於併發導致的執行緒安全問題

-為什麼要使用 volatile關鍵字修飾 ourinstance?

public

class

lazysingleton

/**2.宣告靜態變數 -這裡宣告為volatile,是禁止指令重排序

*/private

volatile

static

lazysingleton ourinstance;

/**3.對外暴露公共的例項化方法

*/public

static

lazysingleton getinstance() }}

return

ourinstance;

}}

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...

單例模式 懶漢式單例模式

單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...

單例模式 之 單例模式 Holder

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