java 06 java 單例模式

2021-09-08 17:00:21 字數 645 閱讀 8372

1.volatile 雙層檢查

public class singleton

//volatile 防止指令重排序

private static volatile singleton singleton = null;

private static singleton getinstance()}}

return singleton;

}}

物件初始化有三個步驟

1.分配記憶體

2.初始化值

3.將記憶體指向引用

當出現指令重排序時執行順序會變成1 3 2

假設有兩個執行緒

執行緒1拿到鎖發生了指令重排序執行了1 3讓後停住

執行緒2過來執行,判斷執行緒是否為空,因為執行緒1已經執行了3,所以拿到乙個非空半初始化的物件

2.靜態內部類,只有在使用的時候才會初始化

public class singleton

private static class singletoninstance

public static singleton getinstance()

}

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...