深入理解Java内存模型

java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。本文大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。
用户头像
作者: 程晓明
下载此书
深入理解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 咨询,感谢支持。

免费下载此书(PDF)

评论

发布
用户头像
非常感谢,楼主牛逼
2019 年 11 月 27 日 17:56
回复
用户头像
thanks

2019 年 11 月 13 日 09:09
回复
用户头像
打印了整个70多页的电子书,值得研读
2019 年 09 月 11 日 22:22
回复
用户头像
在共享内存并发模型里,同步是显式进行的。为什么书中描述Java的并发模型是共享内存模型,Java的线程之间通信是隐式的呢
2019 年 09 月 06 日 14:11
回复
用户头像
这本电子书不可以下载么
2019 年 08 月 13 日 21:24
回复
在网页打开,直接保存网页就OK啦。
2019 年 09 月 20 日 23:22
回复
用户头像
干货,厉害,学到了
2019 年 08 月 05 日 18:49
回复
用户头像
感谢大佬分享
2019 年 05 月 11 日 23:14
回复
用户头像
感谢分享。
2019 年 03 月 03 日 18:46
回复
用户头像
非常感谢
2019 年 02 月 25 日 19:59
回复
没有更多了