这篇文档(the JavaTM Memory Model and Thread Specification)是由JSR-133专家团队开发的JSR-133规范。本规范是JSR-176的一部分(java 5 平台实现的依据),本规范的标准描述会被合并进Java Language Specification(JLS) 、 JavaTM Virtual Machine Specification(JVMS)和Java.lang包中的类规范中。本规范不会通过JCP进行维护和改进。所有的特性、更新、改动、澄清都会被成在上述文档中规范描述。

  本规范的标准内容会在上述文档的第7, 9.2, 9.3, 11, 12,14, 15 16章节中。上述文档的其余章节也包括前面章节的部分内容主要用于澄清本标准的内容。如果这两部分内容有冲突,以标准内容为参考。

  本规范的开发和讨论经过了非常详细的讨论和技术实现,包括很多学术上的研究和延伸。这些讨论可以在JMM的网站上找到,这个网站提供的信息能够帮助更好地理解本规范的产生过程,地址是:http://www.cs.umd.edu/pugh/java/memoryModel。

  改网站和相关人员的邮件地址会被不断更新,对于本规范更新的解释和对于本规范能够更好理解的内容都会不断地更新在这个网站上。

  根据JLS的原始标准要求JVM的实现做出以下两点修改:

  • 加强了volatile的语义,需要有acquire和release语义。 在原始的规范中,范围volatile的变量和非volatile的变量可以自由排序。
  • 对于final关键字,加强了多线程情况下的访问限制,不需要明确使用synchronization来保证线程安全。这可能需要在给final字段赋值的那些构造器的末尾加上store-store屏障。