【发布时间】:2014-12-08 09:45:07
【问题描述】:
谁能解释下面的单例模式代码中延迟初始化是如何发生的?
public class Singleton
{
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance()
{
if (INSTANCE == null)
INSTANCE = new Singleton();
return INSTANCE;
}
}
【问题讨论】:
-
来自Wikipedia about Lazy Initialization:“[...] 延迟初始化是延迟对象创建的策略[...]”
-
关于延迟初始化的好方法,请参阅this question about how Scala does it。
-
“没有线程安全”是一个答案。请参阅this answer 了解其中一种标准习语。