import java.io.Serializable;
/**
* 懒汉单例模式
* 优化:
* 1、使用synchronized防止多线程访问的安全问题
* 2、使用volatitle保证变量的一致
* 3、防止反射调用私有构造方法
* 4、让单例可以序列化
*/
public class Singleton implements Serializable{
private volatile static Singleton singleton=null;
private Singleton(){
//防止反射调用构造方法
if(singleton!=null){
throw new RuntimeException("该类是单例模式,已经被实例化");
}
}
public static Singleton getInstance(){
if(singleton==null){//防止对象已经实例化后又进行同步而影响性能,
synchronized (Singleton.class){
if(singleton==null){//防止多线程访问,重复实例化
singleton=new Singleton();
}
}
}
return singleton;
}
}
import java.io.Serializable;
/**
* 懒汉单例