雙重校驗鎖實現單例模式

2021-10-23 11:41:41 字數 433 閱讀 8705

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...