这个问题已经在这里有一个答案:
- Java的双重检查锁定 11个回答
有一个共同的信念和多个源(包括维基声称此成语是一个反模式)。
什么是对在生产代码中使用它给出正确执行的参数被使用(例如,使用挥发性 )
什么是在多线程环境中实现延迟初始化适当的替代品? 锁定整个方法可能会成为一个瓶颈,甚至在现代的同步是比较便宜的,它仍然要慢得多尤其是在争。 静态持有者似乎是一个特定语言和有点丑陋的黑客(至少对我来说)。 基于原子公司的实现似乎无法从传统的DCL如此不同,同时允许多个计算或需要更复杂的代码。 例如,Scala是仍然使用 DCL实施懒值,同时提出了另外的似乎要复杂得多。