任何单例模式早期实例化的问题

时间:2011-11-30 10:08:32

标签: java singleton instantiation java-memory-model

我使用惰性实例化单例模式

遇到了一些问题

参考:http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

同样,使用早期实例化的单例模式还有任何问题吗?

2 个答案:

答案 0 :(得分:3)

这是大约十年前写的。自2004年以来,最简单的Singleton模式是使用enum,只有一个实例。

enum Singleton {
    INSTANCE;
}

答案 1 :(得分:2)

这个想法似乎是实例化单例可能代价高昂,所以如果它提前完成(也许对于很多单例),它可能会导致应用程序启动时的长时间停顿,而懒惰的实例会延迟周围的延迟。如果不总是需要单身人士,可以完全避免它们。

这对于大量应用程序来说真的是一个问题吗?我非常肯定它不是,博客文章和关于懒惰实例化单例的问题与其实际用途完全不成比例。我同样肯定所有这些关注给了很多人这样的印象,即这是单身人士必须如何实施,并使他们在一个简单的半热切实例化的Singleton完全没问题的地方选择一个不必要的复杂解决方案。

那为什么这个问题会受到如此多的关注呢?我怀疑它的部分原因在于它说明了Java内存模型的一些细节,它们通常与并发代码相关,部分是智能组装游戏。