2.2.3 单例模式 : 懒加载的单例(线程安全):Init on demand holder(在内部类持有)
必要条件
I.JVM在加载类时,不会加载内部类
II.当代码运行到内部类时,才会加载内部类(懒加载)
III.创建的类的逻辑只有static,有线程安全
public class Singleton {
private String value;
public String getValue() {
return value;
}
private static class LazyHoader {//JVM在编译Singleton的时候,并不会加载内部类
private static final Singleton singleton = new Singleton();
static {
/**
* 初始化单例实例的地方
*/
singleton.value = "这个是内部类持有的单例模式";
}
}
public static Singleton getInstance() {
return LazyHoader.singleton;
}//只有在调用内部类时候,才会初始化单例
}