//先寫乙個本類的無參構造方法
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一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...