深入理解 Java 内存模型

Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 java 程序员,本文试图揭开 java 内存模型神秘的面纱。本文大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java 内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。

本期主编:张龙

免费下载阅读

欢迎您 [DOWNLOAD] ,并为我们提出宝贵的建议。本迷你书大小为:1.3M,您需要完整下载,方可正常阅读。

本书目录

  • 基础
    • 并发编程模型的分类
    • 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

重要提示:如果您无法成功下载,请先在网站右上角登录,然后再次刷新本页面,重新下载即可。有任何问题请直接拨打 010-64738142 咨询,感谢支持。