单例模式
- 单例模式之懒汉模 双重校验锁
//懒汉模式,不提前加载instance对象到JVM的堆新生代区域
public class Singleton {
//私有化构造方法,不要外部创建单例
private Singleton(){};
//准备好instance对象===>目前是null
private static Singleton instance;
//向外部提供获得对象的方法,static修饰为了用Singleton直接调用方法
public static Singleton getInstance(){
//双重校验,为了提高效率,上锁之前先判断是否已经有对象存在
//如果有对象直接返回,不需要线程等待
if(instance == null){
//下面代码有线程安全问题,加锁
synchronized (Singleton.class){
//再次判断instance对象是否存在
if(instance == null){
instance = new Singleton();
return instance;
}
}
}
return instance;
}
}