多執行緒模式

2021-10-25 22:01:31 字數 1692 閱讀 2033

餓漢模式

public

class

singleton

public

static

singleton

getinstance()

}

懶漢模式-單執行緒版
public

class

singleton

public

static

singleton

getinstance()

return instance;

}}

懶漢模式-多執行緒版-低效能
public

分析:執行緒a執行完1,執行緒b執行1,縣城a.b都執行2進行競爭物件鎖,縣城a搶占到鎖,然後執行3建立乙個新物件,然後釋放鎖,執行緒2競爭到物件鎖,執行3,4又建立乙個物件,兩個執行緒執行完畢建立了兩個鎖不滿足單利模式(單利模式是只是用乙個物件)

懶漢模式-多執行緒-雙重效驗鎖滿足單例模式
public

class

singleton

public

static

singleton

getinstance()

}}return instance;

}}

雙重效驗:當執行緒a執行完已經建立物件,縣城b不會再建立

volatile
保證可見性

禁止指令重排序

不保證原子性

public

class

singleton

public

static

singleton

getinstance()

}}return instance;

}}

volatile禁止指令重排序作用

分解為原子性指令後,有被volatile修飾的變數的指令不能重排序,其餘指令可以重排序,但是只能在它之前或之後排序不能跨越它,也就是要保持它的相對位置

多執行緒 單例模式與多執行緒

一 前言 如何使單例模式遇到多執行緒是安全的 正確的?我們在學習設計模式的時候知道單例模式有懶漢式和餓漢式之分。簡單來說,餓漢式就是在使用類的時候已經將物件建立完畢,懶漢式就是在真正呼叫的時候進行例項化操作。二 餓漢式 多執行緒 public class myobject public static...

多執行緒 多執行緒 單例設計模式

多執行緒之 單例設計模式 餓漢式 多執行緒安全 1 餓漢式 class single static single getinstance public void show class a implements runnable class test catch interruptedexceptio...

多執行緒設計模式

呼叫類 public class main 介面 public inte ce data 包裝類 public class futureclient start return futuredata 真實資料處理類 public class realdata implements data catch...