兩版懶漢式
第一版直接將synchronized加入到類上
第二版採用dcl模式,效能更好。
//第一版 鎖的範圍太大,效能比較低
public
class
singleton2
private
static singleton2 singleton2;
public
synchronized
static singleton2 getinstance()
return singleton2;}}
//第二版 dcl建立單例物件 雙重檢測鎖 double check lock
public
class
singleton2
// 問題1:解釋為什麼要加 volatile ? => synchronized裡面的**塊是有可能會重排序的,volatile有序性,可以防止指令重排。
private
volatile
static singleton2 singleton2;
// 問題2:對比第一版, 說出這樣做的意義 =>第二次呼叫的時候,如果不為空,就可以直接返回了,保證效能優越性。
public
static singleton2 getinstance()
}}return singleton2;
}}
問題總結:
第一版相對於第二版的缺點?
第二版中:
問題1:解釋為什麼要加 volatile ?
問題2:對比第一版, 說出這樣做的意義?
問題3:為什麼還要在這裡加為空判斷, 之前不是判斷過了嗎?
單例模式之懶漢式
1.思想 為了解惡漢式設計的弊端,我們在建立物件時不會預設例項化。2.解決方法,利用if語句來解決重複空間的問題 public class singleton1 private static singleton1 single null public static singleton1 getsin...
單例模式 懶漢式單例模式
單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...
單例模式(懶漢式)
在學習中遇到的單例模式懶漢式的例子和自己做的筆記 單例設計模式 確保乙個類只有乙個物件 author administrator public class singletonpattern 單例設計模式 懶漢式 不建立物件,在使用時再建立物件 1.構造器私有化 避免外部直接建立物件 2.宣告乙個私有...