public class LazySingleton {
private static LazySingleton lazySingleton = null;//定義類
private LazySingleton(){
}//私有構(gòu)造器
public static LazySingleton getInstance(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}
}
適用單線程場景(對多線程不安全)
線程安全的懶漢單例模式
public class LazySingleton {
private static LazySingleton lazySingleton = null;//定義類
private LazySingleton(){
}//私有構(gòu)造器
public synchronized static LazySingleton getInstance(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}
}
等價寫法:
public class LazySingleton {
private static LazySingleton lazySingleton = null;//定義類
private LazySingleton(){
}//私有構(gòu)造器
public static LazySingleton getInstance(){
synchronized { if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
}
return lazySingleton;
}
}
缺點synchronized 鎖,鎖住了類的全部資源,占用了資源