Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。本文大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。
本期主编:张龙
http://www.infoq.com/cn/minibooks/download/java_memory_model
基础 并发编程模型的分类 Java内存模型的抽象 重排序 处理器重排序与内存屏障指令 happens-before 重排序 数据依赖性 as-if-serial 语义 程序顺序规则 重排序对多线程的影响 顺序一致性 数据竞争与顺序一致性保证 顺序一致性内存模型 同步程序的顺序一致性效果 未同步程序的执行特性 VOLATILE volatile的特性 volatile写-读建立的happens before关系 volatile写-读的内存语义 volatile内存语义的实现 JSR-133为什么要增强volatile的内存语义 锁 锁的释放-获取建立的happens before 关系 锁释放和获取的内存语义 锁内存语义的实现 concurrent包的实现 FINAL 写final域的重排序规则 读final域的重排序规则 如果final域是引用类型 为什么final引用不能从构造函数内“逸出” final语义在处理器中的实现 JSR-133为什么要增强final的语义 总结 处理器内存模型 JMM,处理器内存模型与顺序一致性内存模型之间的关系 JMM的设计 JMM的内存可见性保证 JSR-133对旧内存模型的修补 个人简介 参考文献
读者反馈/投稿:editors [at] cn.infoq.com
商务合作:sales [at] cn.infoq.com,联系电话:15810407783
重要提示:
http://www.infoq.com/cn/minibooks/download/java_memory_model
如果您无法成功下载,请先在网站右上角登录,然后再次刷新本页面,重新下载即可。有任何问题请直接拨打010-64738142咨询,感谢支持。