值得注意的是,在新内存模型下,像双重检查锁定这样的破坏技术仍然被破坏,并且“修复”双重检查锁定并不是新内存模型努力的目标之一。(然而, volatile 的新语义允许双重检查锁定的常用替代方案之一正常工作,尽管该技术仍然不鼓励使用。)
相关讨论:
我可以理解为什么它在没有volatile修复的情况下就坏了。但我不知道为什么即使在修复之后仍然不鼓励它。我注意到在其中一次讨论中存在一些分歧。但如果它真的如参考所建议的那样?这个固定版本仍然不鼓励的原因是什么?
首先:在新的 Java MM 中,双重检查锁定习惯不再被破坏。所以你可以在Java中安全地使用它。
还存在无法使用所有其他替代方案的情况(例如枚举或静态初始化)。例如,如果您需要访问非静态引用才能构造单例。
所以只要你完全理解了这个成语,使用它就是安全的。
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |