Java單例模式

2021-08-19 11:04:24 字數 1125 閱讀 3287

//餓漢式,執行緒安全

class singleton1

private static singleton s = new singleton();

public static singleton getinstance()

}//懶漢式,多執行緒可能建立多個例項

class singleton2

private static singleton2 s = null;

public static singleton2 getinstance()

return s;}}

//加上同步鎖的懶漢式,但是多執行緒情況下效率不高

class singleton3

private static singleton3 s;

object obj = new object();

public static singleton3 getinstance()

}  return s;}}

//同步鎖加雙重校驗,提高效率

//第一重判斷是為了提高效率,當例項已經存在時,不需要經過同步鎖

//第二重判斷是為了防止多次建立例項,同singleton3   推薦

class singleton4

private static singleton4 s = null;

public static singleton4 getinstance()}}

return s;}}

//使用靜態內部類  推薦

//第一. 內部靜態類是要在有引用了以後才會裝載到記憶體的,

//      靜態內部類中的靜態成員只在第一次使用的時候載入

//第二. 在多執行緒環境下,jvm對乙個類的初始化會做限制,同一時間只會

//允許乙個執行緒去初始化乙個類,這樣就從虛擬機器層面避免了大部分單例實現的問題

class singleton5

private static class innerclass

public static singleton5 getinstance()

}//使用列舉類,列舉類是指某個類的物件只有有限個可以窮舉,當只有乙個時,那就是單例

enum singleton6

}

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一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...