【发布时间】:2018-01-23 02:43:19
【问题描述】:
相信大家都知道下面单例模式的实现:
public class Singleton {
private static volatile Singleton instance;
private Singleton(){}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.instance){
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}}
我知道这是一个对应于延迟初始化的实现。 但是 Java ClassLoader 以惰性模式加载类。
如何不延迟初始化任何对象? 无论对象实现,只有在您使用单词“new”或调用工厂方法时才会创建实例。
什么是非延迟类加载?
【问题讨论】:
-
我不知道“单例模式的以下实现”。您发布的代码已损坏,将在
synchronized (Singleton.instance)行的 99.999% 的情况下抛出 NullPointerException。 -
你问的是类“加载”还是“初始化”?你的标题说一个,你的最后一个问题说另一个。它们不是一回事。
标签: java classloader lazy-initialization