java單例模式,懶漢式和餓漢式的區別,雙層鎖式等
單例就是該類只能返回一個例項。
單例所具備的特點:
1.私有化的建構函式
2.私有的靜態的全域性變數
3.公有的靜態的方法
一般常見到的是3種:
餓漢式(執行緒不安全):
public class Singleton1 {
private Singleton1() {};
private static Singleton1 single = new Singleton1();//因為餓漢嘛,餓了所以先直接吃,直接先new了再說
public static Singleton1 getInstance() {
return single;
}
}
懶漢式(執行緒不安全):
public class Singleton2 {
private Singleton2() {}
private static Singleton2 single=null;//因為懶漢嘛,所以什麼時候餓了什麼時候再吃
public tatic Singleton2 getInstance() {
if (single == null) {
single = new Singleton2();
}
return single;
}
}
最有效的是雙層鎖式的方法內容如下(執行緒安全):
public class Singleton3 {
private Singleton3() {}
private static Singleton3 single ;
public static Singleton3 getInstance() {
if(null == single){
synchronized(single ){
if(null == single){
single = new Singleton3();
}
}
}
return single;
}
}
更加詳細的有7種,而且描述也較為準確下面也是我的一篇部落格,想看的可以開啟看一下。
http://blog.csdn.net/dianzijinglin/article/details/50898769