1、先上**:
public
class
singleton
public
static singleton getinstance()
}}return instance;
}}
2、分析:
第一次校驗(instance == null):單例模式只需要建立乙個例項,假如例項不為空則不需要去競爭鎖,提高效能;
第二次校驗(instance == null):synchronized鎖住的是singleton類,在多執行緒中競爭鎖的時候,其中a成功搶奪到資源,建立例項之後釋放資源,則當b獲得鎖之後,校驗instance不為空,則直接去獲得已被建立的例項。
新增volatile關鍵字:被volatile修飾的變數能夠保證每個執行緒能夠獲取該變數的最新值,從而避免出現資料髒讀的現象
單例模式 雙重校驗鎖
單例模式 雙重校驗鎖 author szekinwin public class singleton3 私有化構造方法 private static volatile singleton3 singleton null public static singleton3 getinstance ret...
單例雙重校驗鎖
public class singledoublelock 1 第一次校驗 因為該類是單例的只建立一次,大部分時間single都不為空,所以不會進行第一次檢驗的 塊內部,從而提高效率 2 第二次校驗 如果single為空,執行緒t1,t2進入第一次檢驗的 塊,t1執行synchronized 塊 n...
雙重校驗鎖實現物件單例
package com.heu.wsq.basic 雙重校驗所鎖實現物件單例 執行緒安全 author wsq date 2021 1 24 public class singleton public static singleton getinstance return uniqueinstanc...