設計模式 單例模式的寫法(基礎寫法和執行緒安全寫法)

2021-09-20 09:12:48 字數 1063 閱讀 2988

單例模式的寫法很多,先給出一種最基礎的寫法:

(a種寫法):

package singleton;

public class singletoninstance

public static singletoninstance getinstance()

return msingletoninstance;

}}

a寫法是單例模式最簡單、最基礎、最清晰的寫法,但遺憾的是這種寫法是執行緒不安全的**寫法。假設該類同時在併發n多個執行緒中被訪問被使用、尤其是如果這個類如果涉及到資料庫訪問等等此類執行緒安全問題敏感的**應用場景時,後果將是一場災難。

b種寫法(執行緒安全寫法1):

package singleton;

public class singletoninstance

public static synchronized singletoninstance getinstance()

return msingletoninstance;

}}

單例模式的b種寫法其實是在a種寫法的基礎上的改進,要點是增加了同步機制:synchronized。synchronized ,同步從某種意義上講其實就是阻塞,阻塞的結果就是任意時刻,只有乙個執行緒可以訪問該段同步方法體中的**。這樣被synchronized的**效能將下降,但達到了執行緒安全的目的。

b種單例模式的寫法,主要是為了解決執行緒安全。變體很多,變體的目的主要集中在如何增強執行緒安全的操作性。現舉例如下,比如:

b種寫法的增強型變體(執行緒安全寫法2):

package singleton;

public class singletoninstance

public static singletoninstance getinstance()

} return msingletoninstance;

}}



設計模式 單例模式的寫法

目錄第三種實現方式 執行緒安全 雙重檢查 加鎖 3 靜態內部類實現單例模式 4 列舉 5 參考鏈結 單例模式的特點就是建構函式私有化,變數私有化,然後定義乙個public的方法。class singleton public static singleton getinstance 第一種實現方法 執...

設計模式 單例模式的寫法(基礎寫法和執行緒安全寫法)

單例模式的寫法非常多。先給出一種最基礎的寫法 a種寫法 package singleton public class singletoninstance public static singletoninstance getinstance return msingletoninstance a寫法...

單例模式寫法

單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...