餓漢式(急切例項化)
publicclass
eagersingleton
/**2.宣告靜態成員變數並賦初始值-類初始化的時候靜態變數就被載入,因此叫做餓漢式
*/public
static eagersingleton eagersingleton=new
eagersingleton();
/**3.對外暴露公共的例項化方法
*/public
static
eagersingleton getinstance()
}
懶漢式(延遲例項化)(dcl雙重檢測)
-為什麼要判斷兩次?
避免由於併發導致的執行緒安全問題
-為什麼要使用 volatile關鍵字修飾 ourinstance?
publicclass
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 對效...