[译]The Java Memory Model 未完

原文:http://www.cs.umd.edu/~pugh/java/memoryModel/
该网页是讨论Java内存模型(Java语言规范第17章)的信息起点。Java内存模型定义线程如何通过内存进行交互。
过去有些不清楚和多余的内容,因此进行了修订。
这是该修订的参考页面。
JSR-133的官方站点 - Java(tm)内存模型和线程规范修订版 - 请点这里
此页面分为几个部分:

  1. 内存模型的主要参考资料。
  2. 邮件列表和档案。
  3. 内存模型的其他材料,包括有关双重锁的信息。
  4. 内存模型的旧材料,已过时。
  5. 进一步阅读的其他资源。

参考资料

对于任何试图理解内存模型的人来说,这些参考资料都是一个很好的起点,它们涵盖了所涉及的大多数主要问题。

  • 对于初次访客

可以查阅JSR-133 FAQ(待译)。对于那些刚刚意识到这些问题的人来说,这是一个很好的起点。(2004年2月11日)

  • 对于JVM和编译器实现者

《Doug Lea's JSR-133 cookbook》,是希望实现Java内存模型的编译器编写者的指南。
Sarita Adve和Kourosh Gharachorloo在1995年撰写了关于内存模型的教程,这仍然是一本很好的参考和入门书。Compaq研究报告 95/7,1995年9月, 95.7 -- Shared Memory Consistency Models: A Tutorial.

  • 对于那些希望完全了解内存模型的人

结合了Jeremy Manson的论文的内存模型期刊投稿(已失效,
补Jeremy Manson论文),POPL论文和CSJP论文。对于那些对内存模型问题有深入讨论兴趣的人来说,这是最好的选择。(2005年10月7日)。
JSR-133规范,处于最终批准投票中。这是“官方规范”(2004年8月9日),无需太多解释。
final关键字语义的新表示/描述。这是对final关键字的语义的简要描述。(2004年5月12日)

  • 邮件列表

要加入Java内存模型邮件列表,请访问此页面
要发布到列表,请发送电子邮件至javamemorymodel-discussion@mimsy.cs.umd.edu(只有订阅者可以发布到列表中)。
该列表已迁移。要访问旧列表的存档,请访问 此页面。要访问新列表的存档,请访问 此页面。
附加信息
双重检查锁定已损坏
双重检查锁定(也称为多线程单例模式)是一种广泛使用的习惯用法,用于将单个对象发布到多个线程。
“双重检查锁定”声明
本文档描述了为什么双重检查锁定模式被破坏,除非您使用显式内存屏障(或对您的处理器和编译器做出假设)。

复述成语的描述
Reality Check,Douglas C. Schmidt,C ++ Report,SIGS,Vol。1996年3月8日第3号。
Double-Checked Locking:一种有效初始化和访问线程安全对象的优化模式,Douglas Schmidt和Tim Harrison。 1996年 第三届年度模式语言程序设计会议
懒惰的实例化,Philip Bishop和Nigel Warren,JavaWorld杂志
在现实世界中编写Java线程,第7部分,Allen Holub,Javaworld Magazine,1999年4月。
其他信息
因果关系测试案例1-20
本文档提供了有关合法和非法多线程模式的非正式说明。
易失性规范符合性测试
AtomicLong.java - 测试volatile的Longs的原子读/写
CoherenceVolatile.java - 测试涉及volatile的非法编译器优化
ReadAfterWrite.java - 测试挥发性的顺序一致性
这是一个包含测试的tar文件,以及有关其输出的更多详细信息。
Spec基准测试中的同步操作数表
旧材料(对于您中的记忆模型历史学家)
这是记忆模型在其飞行三年中经历的许多修订的列表。他们大多过时了。如果您对模型感兴趣,最好的选择是上面的参考资料。
内存模型提案草案
早期的草案规范包含了最终规范草案的一些小修正。 (2004年4月23日)
JSR-133的拟议最终草案(2004年4月12日)
有关Java统一内存模型提案的文档,包括其他测试用例(2004年3月16日)
更新JSR-133公共审查文件,包括澄清和小修正,不包含新的形式主义。(2004年3月16日)
为JSR-133内存模型编写替代形式主义(2004年3月16日)
JSR-133正在公开审查中(2004年3月16日)
没有禁止执行的MP的实验版本 (2004年2月24日)。
JSR-133公共审查文件 (2004年2月2日)。
2004年2月6日的竞争模型。
SC-
Manson / Pugh模型:
简明非正式M / P模型描述
证明M / P模型具有某些理想的特性
M / P模型的长期,正式描述
2003年10月17日
10月23日Manson / Pugh核心记忆模型的描述(以前版本的小调整)
证明正确同步的程序具有顺序一致的语义,并且标准重新排序转换是有效的
JSR-133社区审查文件
2003年8月29日:Manson / Pugh核心内存模型的新页面描述(附带一页半的附录)
2003年8月8日:JSR-133社区审查文件
2003年8月4日:证明Resonder在Manson / Pugh下是合法的
2003年7月31日:Manson / Pugh核心内存模型的一页描述(附有一页附录)
正常字段的完整语义是由Jeremy Manson和William Pugh于2003年1月13日修订的“多线程Java语义的新方法”。
最终字段的完整语义在最终字段语义中,由Jeremy Manson和William Pugh于2003年4月7日修订。
Java的多线程语义,以前的语义版本。(2001年)
弱内存订单和面向对象编程,OOPSLA海报会议提交摘要草案(PDF)(PS)
Java内存模型 由William Pugh 打破,下一篇论文的Journal版本; 稍微清理纸张并删除该文件中建议的天真修复。
修复Java内存模型 由威廉·皮尤, 1999 ACM的Java重创
会谈
Dagstuhl的演讲(2003年10月24日)
用于Java的多线程语义,(麻省理工学院于2000年9月10日给出的演示文稿的编辑版本)
幻灯片(PDF 或PS)和讲义(PDF 或 PS)
JavaOne BOF关于修改Java Thread Spec,与Doug Lea(2000)
JavaOne Talk,Doug Lea(2000)
OOPSLA 2000研讨会页面
JavaOne 2000 BOF关于修改Java Thread Spec的页面
来自1999 Java Grande Talk的幻灯片
附加背景阅读
作者:Doug Lea
Java内存模型,第2.2.7 在Java中,2并发编程第二版,Doug Lea的,艾迪生韦斯利,1999年
第17.4节“等待集和通知”的提议修订,Doug Lea
由Cenciarelli等人
基于事件的多线程Java结构操作语义,P。Cenciarelli,A。Knapp,B。Reus,M。Wirsing,In Jim Alves-Foss(Ed。)Formal Syntax and Semantics Of Java,LNCS 1523,pp。 157--200,Springer,柏林,1999年。
从顺序到多线程Java:基于事件的操作语义,P。Cenciarelli,A。Knapp,B。Reus,M。Wirsing,In Proc。6 ^ Int。CONF。代数方法和软件技术,LNCS 1376,pp.402--417。施普林格出版社。1998年柏林。
验证多线程Java的编译器优化,B.Reus,A。Knapp,P。Cenciarelli,M。Wirsing,WADT Workshop 97,LNCS。
由舒斯特等人。
Java内存模型:Assaf Schuster的精确表征, 高性能计算Java研讨会,1999年6月,Rhodes。
Java一致性: Alex Gontmakher和Assaf Schuster 对Java内存行为的非操作特征,ACM Transactions on Computer Systems第18卷,第4期(2000年11月)第333-386页。
在其他内存模型上
CAPSL技术备忘录16:(148K gzipped Postscript), “位置一致性 - 一种新的内存模型和缓存一致性协议”, Guang R. Gao,Vivek Sarkar ,1998年2月16日。
TLA和TLA +,Lamport等。
由Arvind等人。
使用CRF改进Java内存模型,Jan-Willem Maessen,Arvind和Xiaowei Shen,OOPSLA 2000
Commit-Reconcile and Fences(CRF):建筑师和编译器作家的新记忆模型,Xiaowei Shen,Arvind和Larry Rudolph,1998年12月,出席第26届计算机体系结构国际研讨会,1999年5月,佐治亚州亚特兰大。 ,(14页)。
使用CRF改进Java内存模型,Jan-Willem Maessen,Arvind和Xiaowei Shen,OOPSLA 2000
由其他人
所造成的影响的初步审查“读杀”由 丹秤,数字西方研究实验室
Javasoft Bug#4242244:JLS需要Coherence,Sun的JIT不提供它。
使用抽象状态机,Yuri Gurevich,Wolfram Schulte和Charles Wallace 调查Java并发性
本页面由William Pugh维护 。本材料基于国家科学基金会在第0098162号批准下提供的工作。本材料中表达的任何观点,发现,结论或建议均为作者的观点,不一定反映国家科学的观点。基础。

Comments
Write a Comment