双重检查
双重检查应用实例
代码演示:
class Singleton{
    private static volatile Singleton singleton;
    private Singleton(){}
 // 提供一个静态公有方法
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
            // 同步代码,效率是比较低的
            // 只是在判断外就走过了
        }
        return instance;
    }
}
优缺点说明
double-check 概念是多线程开发中常使用到的,如代码中所示,我们进行了两次
if(singleton == null)检查,这样就可以保证线程安全了这样,实例化代码只用执行一次,后面再次访问时候,判断
if(singleton==null), 直接return实例化对象,也避免的反复进行方法同步.线程安全;延迟加载;效率较高
结论:在实际开发中,推荐 使用这种单例设计模式
