此wiki页面解释了"按需初始化持有人习惯用语"使用延迟加载。
按需初始化持有人习语
public class Something {
private Something() {}
private static class LazyHolder {
private static final Something INSTANCE = new Something();
}
public static Something getInstance() {
return LazyHolder.INSTANCE;
}
}
的Singleton
public class Something {
private Something() {}
private static final Something INSTANCE = new Something();
public static Something getInstance() {
return INSTANCE;
}
}
我的理解是,第一次调用类Something
时会加载并初始化它。
但是,LazyHolder
将在加载Something
的同时加载。
然后,这两个在初始化方面有何不同?为什么与通常的 Singleton 方法相比,按需初始化持有者习惯用法使用延迟初始化?