單例模式之懶漢式

2021-10-23 13:43:46 字數 851 閱讀 9076

兩版懶漢式

第一版直接將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.宣告乙個私有...