單例模式幾種實現

2021-08-10 12:29:41 字數 903 閱讀 6883

1.單執行緒模式下,推薦懶載入

public

class singleton1

public

static singleton1 getinstance()

return singleton;

}}

2.上述1演示,執行緒不安全,最容易想到的變為執行緒安全的方式就是加關鍵字synchronized

public

class singleton1_1

public synchronized static singleton1_1 getinstance()

return singleton;

}}

3.「雙重檢查鎖」(double check lock,簡稱dcl)

public

class singleton1_2

public

static singleton1_2 getinstance() }}

return singleton;

}}

4.由於指令重排,上述3,仍然可能不安全,volatile關鍵字可以解決此問題

public

class singleton1_3

public

static singleton1_3 getinstance() }}

return singleton;

}}

5.餓漢模式

public

class singleton2

public

static singleton2 getinstance()

}

單例模式的幾種實現

首先說明 singleton 是乙個單詞,不是乙個複合詞。接下來步入正題。對於單例模式無論是 餓漢 還是 懶漢 都必須要有的是 一.私有建構函式 二.宣告靜態單例物件 如果是 懶漢 的話為了寫出好的沒有 bug的單例 還應注意 三.構造單例物件之前要加鎖 lock乙個靜態的object物件 四.需要...

單例模式的幾種實現

1 餓漢式 執行緒安全,呼叫效率高,但是不能延時載入 public class imageloader public static imageloader getinstance 一上來就把單例物件建立出來了,要用的時候直接返回即可,這種可以說是單例模式中最簡單的一種實現方式。但是問題也比較明顯。單...

單例模式的幾種實現

單例模式,是設計模式之一,目的是為了只提供乙個物件,單例模式的實現,一般需要滿足 1 構造器私有 2 提供乙個共有的外界訪問例項的方法 以下提供單例模式的幾種實現方式 單例 餓漢式 public class eagersingleton 獲取例項的公共方法 public static eagersi...