/**
* 静态内部类,懒加载
* 本质上是利用类加载机制保证线程安全
* 只有在实际使用时才会触发类的初始化,也是懒加载的一种形式
*/
public class InnerClassSingleton {
//调用getInstance返回值时,才会导致静态内部类初始化
private static class InnerClassHolder{
private static InnerClassSingleton instance = new InnerClassSingleton();
}
private InnerClassSingleton(){
//反射攻击防护
if(InnerClassHolder.instance != null){
throw new RuntimeException("单例不允许多个实例");
}
}
public static InnerClassSingleton getInstance(){
return InnerClassHolder.instance;
}
}