【发布时间】:2009-04-03 05:45:35
【问题描述】:
对象的惰性分配是什么意思,它有什么用处?
【问题讨论】:
对象的惰性分配是什么意思,它有什么用处?
【问题讨论】:
惰性分配只是意味着在实际需要之前不分配资源。这在单例对象中很常见,但严格来说,任何时候尽可能晚地分配资源,都有一个惰性分配的例子。
通过延迟分配资源直到您真正需要它,您可以减少启动时间,如果您从未真正使用过该对象,甚至可以完全消除分配。相比之下,您可以预先分配您期望稍后需要的资源,这样可以以牺牲启动时间为代价提高以后的执行效率,并且还可以避免在程序执行后期分配失败的可能性。
以下代码提供了延迟分配单例的示例:
public class Widget {
private Widget singleton;
public static Widget get() {
if (singleton == null) {
singleton = new Widget();
}
return singleton;
}
private Widget() {
// ...
}
// ...
}
请注意,此代码不是线程安全的。在大多数情况下,对get() 方法的访问应该以某种方式同步。
一个类似的(也许更普遍的)概念是lazy initialization。
【讨论】: