单例模式大家都知道有两种方式,一种是饿汉式,一种是懒汉式
饿汉式:一开始就初始化实例
public class Singleton { private final static Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton; } }
懒汉式,记住这种双重检查的方式,保证线程的安全:
public class Singleton { private static volatile Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
这种静态内部类的方式,也很可靠:调用的时候才初始化
public class Singleton {
private Singleton() {}
private static class SingletonInstance {
private static final Singleton singleton = new Singleton();
}
public static Singleton getInstance() {
扫描二维码关注公众号,回复:
5288009 查看本文章
return SingletonInstance.singleton;
}
}