Java内存模型已经被遗忘了九年多了,但是大多数开放源代码Java支持者都希望对其进行现代化,并专注于并发,因为Java内存模型中引入的过程仅朝现代化迈出了一步 。
一个JEP(JDK增强建议),编号188 ,已于本月发布,它提供了对影响Java SE(标准版),JVM支持,测试和工具的共享内存并发工作的指导。
根据JEP文档,在设计并发和并行平台时,指定共享内存一致性模型以及开发和维护符合它们的功能和组件是最核心但最困难的问题之一。 随着时间的推移,规格限制,错误和意外后果变得显而易见。 出现了摆脱现有界限的新硬件平台,编程技术以及软件组件和工具。
JEP试图解决上述问题。 它还扩展了Java内存模型的覆盖范围,该内存模型最近一次与Java SE 5一起发布于2004年9月,与Java SE 7的当前版本和3月将要发布的Java SE 8的新版本相去甚远。
正如该提案的作者Doug Lea所解释的那样,内存模型提出了关于线程与内存如何交互的形式化的,主要是数学表达的规则。 最终所有Java线程操作和同步都是根据内存模型指定的。 该模型可用于修订Java语言规范,改进实现,支持新的并发功能以及开发新的编程工具。
如果JEP努力取得成功,则可能会导致整个平台的各种增强,调整和错误修复。 某些不常见的边界编程构造也可能会出现问题。 但是不会对向后兼容性或不相关的规范或API产生进一步的影响。 另一方面,如果努力未能实现其目标,那么目前的局势将继续保持下去。
该提案将以改进基础内存模型的形式化为特征,其中修订后的模型将在机械上可检查且更易于理解。 现有错误也将得到解决,JVM覆盖率将与C11 / C ++兼容性和实现指南一起得到解决。
根据该建议,很难测试是否符合存储器模型的要求,因此,希望工程师能够设计和实施具有清晰基础规格的测试。 重新开发的模型将适合开发工具使用,这些工具可以分析检查并发执行期间的竞争条件和安全属性维护等错误。
Lea曾在JCP(Java社区流程)执行委员会任职,但于2010年离职。Lea澄清说,尽管JCP可能会参与该工作的副产品,但内存模型建议并非JCP的工作。
翻译自: https://www.javacodegeeks.com/2014/01/java-memory-model-is-back.html