首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

双重稽查锁定及单例模式

2012-09-20 
双重检查锁定及单例模式所有的编程语言都有一些共用的习语。了解和使用一些习语很有用,程序员们花费宝贵的

双重检查锁定及单例模式

所有的编程语言都有一些共用的习语。了解和使用一些习语很有用,程序员们花费宝贵的时间来创建、学习和实现这些习语。问题是,稍后经过证明,一些习语并不完全如其所声称的那样,或者仅仅是与描述的功能不符。在 Java 编程语言中,双重检查锁定就是这样的一个绝不应该使用的习语。在本文中,Peter Haggar 介绍了双重检查锁定习语的渊源,开发它的原因和它失效的原因。

编辑注:本文在针对 Java 5.0 修订前参考了 Java 内存模型;关于内存排序的描述也许不再正确。尽管如此,在新的内存模型中,双重检查锁定习语仍旧是无效的。

单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java 内存模型的一些隐秘细节。这些事实将导致代码失败,原因是双重检查锁定难于跟踪。在本文余下的部分里,我们将详细介绍双重检查锁定习语,从而理解它在何处失效。


双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首



双重稽查锁定及单例模式
双重稽查锁定及单例模式
回页首


双重稽查锁定及单例模式

Peter Haggar 是 IBM 在北卡罗来纳州的 Research Triangle Park 的一名高级软件工程师,他还是 Practical Java Programming Language Guide(Addison-Wesley 出版)一书的作者。此外,他还发表了很多篇关于 Java 编程的文章。他有着广泛的编程经验,曾致力于开发工具、类库和操作系统相关的工作。Peter 在 IBM 致力于研究新兴 Internet 技术,目前主要从事高性能 Web 服务方面的工作。Peter 经常在很多行业会议上作为技术发言人就 Java 技术发表言论。他已经为 IBM 工作了 14 年多,并获得了 Clarkson University 的计算机科学学士学位。您可以通过 haggar@us.ibm.com 与他联系。

热点排行