public class Singleton {
private Singleton() {
}
private static class SingletonHolder{
private static final Singleton singleton = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.singleton;
}
}
说明
静态内部类不会随着外部类的加载而加载 ,只有静态内部类的静态成员被调用时才会进行加载 , 这样既保证的惰性初始化(Lazy-Initialazation),又由JVM保证了多线程并发访问的正确性。