静态内部类(也是一种懒加载方式)
要点
- 外部类没有static属性,不会像饿汉式那样立即加载对象
- 只有真正调用getInstance()才会加载静态内部类。加载类时是线程安全的。instance是static final 型(final可加可不加),保证了只有一个实例存在,而且只能被赋值一次,从而保证了线程安全。
- 兼备了并发高效调用和延迟加载的优势!
public class StaticInnerSingleton {
private StaticInnerSingleton() {}
private static class SingletonClassInstance{
private static final StaticInnerSingleton instance = new StaticInnerSingleton();
}
public static StaticInnerSingleton getInstance() {
return SingletonClassInstance.instance;
}
}