Java 什么是非惰性初始化?
我相信每个人都知道以下Singleton模式的实现:Java 什么是非惰性初始化?,java,classloader,lazy-initialization,Java,Classloader,Lazy Initialization,我相信每个人都知道以下Singleton模式的实现: public class Singleton { private static volatile Singleton instance; private Singleton(){} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.instance){ if (i
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类加载器以惰性模式加载类
任何对象如何不被延迟初始化?
无论对象实现如何,只有在使用单词“new”或调用工厂方法时才会创建实例
什么是非惰性类加载?非惰性加载将在加载类时立即实例化实例,而不是等到第一次调用getInstance
如果加载了类,但没有人调用getInstance,那么创建一个从未使用过的对象会浪费时间和内存。非延迟加载会在加载类时立即实例化实例,而不是等到第一次调用getInstance
如果类已加载,但没有人调用getInstance,那么创建一个从未使用过的对象会浪费时间和内存。我不知道以下Singleton模式的实现。您发布的代码已损坏,将在99.999%的情况下在line synchronized Singleton.instance上抛出NullPointerException。您是否询问类加载或初始化?你的题目是一个,你的最后一个问题是另一个。它们不是一回事。我不知道下面的单例模式的实现。您发布的代码已损坏,将在99.999%的情况下在line synchronized Singleton.instance上抛出NullPointerException。您是否询问类加载或初始化?你的题目是一个,你的最后一个问题是另一个。他们不是一回事。
public class Singleton {
private static volatile Singleton instance = new Singleton();
private Singleton() { }
public static Singleton getInstance() {
return instance;
}
}