java執行緒安全之單例 多執行緒(十一)

2021-08-10 22:57:19 字數 1527 閱讀 5980

概念理解

單例模式,最常見的就是飢餓模式,和懶漢模式,乙個直接例項化物件,乙個在呼叫方法時進行例項化物件。在多執行緒模式中,考慮到效能和執行緒安全問題,我們一般選擇下面兩種比較經典的單例模式,在效能提高的同時,又保證了執行緒安全。

案例

在這裡講兩種常用的模式

1、double check locking 雙檢查鎖機制

public

class

dubblesingleton catch (interruptedexception e)

//鎖定當前類 dubblesingleton 不能有另外乙個執行緒建立dubblesingleton這個例項

synchronized (dubblesingleton.class) }}

return ds;

}public

static

void

main(string args)

},"t1");

thread t2 = new thread(new runnable()

},"t2");

thread t3 = new thread(new runnable()

},"t3");

t1.start();

t2.start();

t3.start();

}}

列印結果

37026807

37026807

37026807

從執行結果來看,該中方法保證了多執行緒併發下的執行緒安全性。

在同步**塊中使用二次檢查,以保證其不被重複例項化。這種實現方式既保證了其高效性,也保證了其執行緒安全性。

2、static inner class(靜態內部類)

靜態**塊中的**在使用類的時候就已經執行了,所以可以應用靜態**塊的這個特性的實現單例設計模式。

public

class

singletion

public

static singletion getinstance()

public

static

void

main(string args)

},"t1");

thread t2 = new thread(new runnable()

},"t2");

thread t3 = new thread(new runnable()

},"t3");

t1.start();

t2.start();

t3.start();

}}

列印結果

191824015

191824015

191824015

從執行結果看,單例的執行緒安全性得到了保證。

源**:

多執行緒安全單例模式

在文章開始之前我們還是有必要介紹一下什麼是單例模式。單例模式是為確保乙個類只有乙個例項,並為整個系統提供乙個全域性訪問點的一種模式方法。從概念中體現出了單例的一些特點 1 在任何情況下,單例類永遠只有乙個例項存在 2 單例需要有能力為整個系統提供這一唯一例項 1.全域性變數的缺點 必須在程式一開始就...

c 多執行緒單例模式 執行緒安全C 單例模式

我對此處記錄的單例模式有一些疑問 http us library ff650316.aspx 以下 摘自該文章 using system public sealed class singleton private static volatile singleton instance private ...

多執行緒安全的單例模式

執行緒安全的單例模式有多種寫法,下面的這種寫法是我最常用的一種 public class singleton public static singleton getinstance return singleton 兩點說明 1.給singleton加volatile關鍵字是位了禁止指令重排序,因為...