public class LazySingleton {
private static LazySingleton lazySingleton = null;//定义类
private LazySingleton(){
}//私有构造器
public static LazySingleton getInstance(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}
}
适用单线程场景(对多线程不安全)
线程安全的懒汉单例模式
public class LazySingleton {
private static LazySingleton lazySingleton = null;//定义类
private LazySingleton(){
}//私有构造器
public synchronized static LazySingleton getInstance(){
if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
return lazySingleton;
}
}
等价写法:
public class LazySingleton {
private static LazySingleton lazySingleton = null;//定义类
private LazySingleton(){
}//私有构造器
public static LazySingleton getInstance(){
synchronized { if(lazySingleton == null){
lazySingleton = new LazySingleton();
}
}
return lazySingleton;
}
}
缺点synchronized 锁,锁住了类的全部资源,占用了资源