餓漢模式
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...