Java單例模式

2021-08-28 06:20:50 字數 1482 閱讀 9683

//先寫乙個本類的無參構造方法

private singleton() {}

//懶漢就是先賦值為null

private static singleton single=null;

//然後進行判斷是否是null,在呼叫的時候如果是null,就new乙個物件

public static singleton getinstance()

return single;

}

執行緒是不安全的,併發情況下可能出現多個例項,保證安全可以新增鎖。getinstance新增synchronized修飾,也可以在判斷之前新增類鎖,synchronized(singleton.class)。

//先寫乙個本類的無參構造方法

private singleton1() {}

//餓漢就是new例項,在返回

private static final singleton1 single = new singleton1();

public static singleton1 getinstance()

餓漢式在類建立的同時就已經建立好乙個靜態的物件,以後不再改變,所以是執行緒安全的。

1.	//類似spring裡面的方法,將類名註冊,下次從裡面直接獲取。  

2. public class singleton3

8. //保護的預設構造子

9. protected singleton3(){}

10. //靜態工廠方法,返還此類惟一的例項

11. public static singleton3 getinstance(string name)

16. if(map.get(name) == null) catch (instantiationexception e) catch (illegalacces***ception e) catch (classnotfoundexception e)

26. }

27. return map.get(name);

28. }

29. //乙個示意性的商業方法

30. public string about()

33. public static void main(string args)

將這些例項存放在乙個map(登記薄)中,對於已經登記過的例項,則從map直接返回,對於沒有登記的,則先登記,然後返回。 其實內部實現還是用的餓漢式單例,因為其中的static方法塊,它的單例在類被裝載的時候就被例項化了。

**所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段**。如果每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是執行緒安全的。

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