单例模式
作者:互联网
饿汉式
// 饿汉式
// 优点:没有线程安全问题
// 缺点:提前实例化,暂用内存空间
public class HungerSingleton {
private HungerSingleton(){};
private static final HungerSingleton instance= new HungerSingleton();
public static HungerSingleton getInstance(){
return instance;
}
}
懒汉式
// 懒汉式
// 优点:用到再加载,不占用内存
public class LazySingleton {// 缺点:有线程安全问题
private LazySingleton(){};
private static LazySingleton instance= null;
public static LazySingleton getInstance(){
if(null==instance){
instance= new LazySingleton();
}
return instance;
}
}
public class LazySingleton {// 缺点:多线程访问有安全问题
private LazySingleton(){};
private static LazySingleton instance= null;
public static LazySingleton getInstance(){
if(null==instance){
// 多线程同时进入会重复创建
synchronized (LazySingleton.class){
instance= new LazySingleton();
}
}
return instance;
}
}
public class LazySingleton {// 使用双重验证保证只实例化一次
private LazySingleton(){};
private static LazySingleton instance= null;
public static LazySingleton getInstance(){
if(null==instance){
synchronized (LazySingleton.class){
if(null==instance) {
instance= new LazySingleton();
}
}
}
return instance;
}
}
标签:LazySingleton,private,instance,static,模式,单例,null,public 来源: https://blog.csdn.net/DavidSoCool/article/details/88552297