本文是JSR-133规范,即JavaTM内存模型与线程规范,由JSR-133专家组开发。本规范是JSR-176(定义了JavaTM平台 Tiger(5.0)发布版的主要特性)的一部分。本规范的标准内容将合并到JavaTM语言规范、JavaTM虚拟机规范以及java.lang
包的类说明中。本JSR-133规范将不再通过JCP维护和修改。未来所有对这些标准化内容的更新、修正以及说明都会出现在上述这些文档中。
本规范的标准化内容包含在第5, 7, 9.2, 9.3, 11, 12, 14, 15以及16节。其它章节,以及上述提到的章节的部分内容,属非标准化内容,用于解释和说明标准化内容。如果标准化内容和非标准化内容有冲突,以标准化内容为准。
本规范的讨论与开发异常复杂且专业性强,需要对一些学术论题有深刻的见解并了解它们的发展过程。这些讨论在JMM web站点上都有存档。该站点提供了额外的信息,可以帮助理解本规范形成的过程。
站点是:http://www.cs.umd.edu/~pugh/java/memoryModel
上述web站点以及邮件列表将持续更新和维护,非标准化内容,有助于人们理解JSR-133规范,未来若有更新和扩展,将可以从该站点上找到。
在对JLS原始规范的改变中,有两处最有可能要求JVM实现也做出相应的变动:
- 加强了volatile变量的语义,需要有acquire和release语义。在原始的规范中,volatile变量的访问和非volatile变量的访问之间可以自由地重排序。
- 加强了final字段的语义,无需显式地同步,不可变对象也是线程安全的。这可能需要在给final字段赋值的那些构造器的末尾加上store-store屏障。