当JVM加载LazyLoadedSingleton类时,由于该类没有static属性,所以加载完成后便即刻返回。只有第一次调用getIndtance()方法时,JVM才会加载LazyHolder类,由于它包含一个static属性singletonInstance,所以会首先初始化这个变量。
public class LazyLoadedSingleton{
private LazyLoadedSingleton(){
}
private static class LazyHolder{
private static final LazyLoadedSingleton singletonInstance = new LazyLoadedSingleton();
}
public static LazyLoadedSingleton getInstance(){
return LazyHolder.singletonInstance;
}
}