單例模式之靜態內部類和雙重校驗的實現方式

2021-09-25 03:53:04 字數 701 閱讀 8647

單例模式有實現方式有懶漢式和餓漢式兩種,而懶漢式又面臨執行緒安全問題。在這裡學習一下單例模式的兩種經典的實現方式:innerclass和dubblecheck

靜態內部類不會隨著外部類的載入而載入 ,只有靜態內部類的靜態成員被呼叫時才會進行載入 , 這樣既保證的惰性初始化,又由jvm保證了多執行緒併發訪問的正確性。
public

class

singletion

public

static singletion getinstance()

}

public

class

dubblesingleton}}

return ds;

}}

第二次判空是防止多執行緒情況下發生以下情況:

a.假設:執行緒a已經經過第一次判斷,判斷singleton=null,準備進入同步**塊.

b.此時執行緒b獲得時間片,猶豫執行緒a並沒有建立例項,所以,判斷singleton仍然=null,所以執行緒b建立了例項singleton。

c.此時,執行緒a再次獲得時間片,猶豫剛剛經過第一次判斷singleton=null(不會重複判斷),進入同步**塊,這個時候,我們如果不加入第二次判斷的話,那麼執行緒a又會創造乙個例項singleton,就不滿足我們的單例模式的要求,所以第二次判斷是很有必要的。

單例模式 靜態內部類

靜態內部類是乙個很好的實現單例的方式 看 package cn.liz.syn public class staticinner 私有的靜態內部類 private static class inner 公共的 獲取例項的方法 public static staticinner getinstance...

單例模式 靜態內部類

1 2 單例模式 靜態內部類3 4public class singletontest0711 1213 14 靜態內部類實現方式 15 16class singleton 2324 25 2.寫乙個靜態內部類,直接返回singleton 26 27private static class sing...

單例模式之靜態內部類實現

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的乙個類只有乙個例項。即乙個類只有乙個物件例項。最常用的單例模式有惡漢式和懶漢式兩種方式,除此之外還有一種通過靜態內部類實現的單例模式。原文摘自 1.示例 public class...