設計模式 單例模式(執行緒安全)

2021-08-07 15:39:52 字數 956 閱讀 9989

前言:

單例模式是設計模式中比較簡單的一種,但是又因為簡單常見在面試中又是經常出現的乙個設計模式。所以必須要會啊。之前也只是會寫執行緒不安全的單例模式。

單例模式:乙個類能返回物件乙個引用(永遠是同乙個)和乙個獲得該例項的方法(必須是靜態方法,通常使用getinstance這個名稱);當我們呼叫這個方法時,如果類持有的引用不為空就返回這個引用,如果類保持的引用為空就建立該類的例項並將例項的引用賦予該類保持的引用;同時我們還將該類的建構函式

定義為私有方法,這樣其他處的**就無法通過呼叫該類的建構函式來例項化該類的物件,只有通過該類提供的靜態方法來得到該類的唯一例項。

1、懶漢模式

全域性的單例例項在第一次被使用時構建。

class singleton

public:

static singleton* getinstance();

};singleton* singleton::getinstance()

unlock();

}return instance;

}

note:如果我們使用懶漢模式處理大量資料,效能會成為乙個問題(因為使用了兩次條件判斷)

2、餓漢模式

無論是否呼叫該類的例項,都會建立乙個該類的例項,然後通過介面返回該類的這個唯一例項。餓漢模式通過靜態例項初始化保證執行緒安全(不需要加鎖)。所以在需要考慮效能的時候,需要採用這種模式,可以避免頻繁的鎖爭奪。

class singleton

public:

static const singleton* getinstance()

};const singleton* singleton::instance = new singleton;

3、enum列舉

設計模式之單例模式 執行緒安全

可以說單例模式是所有設計模式中最簡單的一種。單例模式就是說系統中對於某類的只能有乙個物件,不可能出來第二個。單例模式也是23中設計模式中在面試時少數幾個會要求寫 的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。1.多執行緒安全單例模式例項一 不使用同步鎖 1 public class...

設計模式之單例模式 執行緒安全

可以說單例模式是所有設計模式中最簡單的一種。單例模式就是說系統中對於某類的只能有乙個物件,不可能出來第二個。單例模式也是23中設計模式中在面試時少數幾個會要求寫 的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。1.多執行緒安全單例模式例項一 不使用同步鎖 1 public class...

設計模式之單例模式 執行緒安全

可以說單例模式是所有設計模式中最簡單的一種。單例模式就是說系統中對於某類的只能有乙個物件,不可能出來第二個。單例模式也是23中設計模式中在面試時少數幾個會要求寫 的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。1.多執行緒安全單例模式例項一 不使用同步鎖 1 public class...