Java并发编程实战 封面

Java并发编程实战

评分 4.5
章节数
25
丛书
华章专业开发者丛书
ISBN
9787111370048

标签

内容简介

《Java并发编程实战》(原书名 Java Concurrency in Practice)是 Java 并发领域公认的经典著作,作者团队来自 Java Community Process 中负责并发工具(JSR 166)的专家组,java.util.concurrent 包中相当多的 API 即出自他们之手。本书并不满足于罗列 API 清单,它更侧重于讲清这些并发工具为何存在、如何正确使用,以及背后的设计原则、模式和思维模型。 全书分为四部分、共 16 章。第一部分“基础知识”从并发性与线程安全性的概念讲起,讨论原子性、竞态条件、内置锁与重入、对象的可见性与安全发布、线程封闭与不变性,以及如何把小型线程安全类组合成更大的线程安全组件。第二部分“结构化并发应用程序”围绕任务执行展开,介绍 Executor 框架、任务的取消与关闭、线程池的配置与扩展,并以图形界面等单线程子系统为例说明并发与响应性的关系。第三部分“活跃性、性能与测试”分析死锁等活跃性危险,讲解 Amdahl 定律、锁竞争与上下文切换开销,并给出并发程序正确性测试与性能测试的方法。第四部分“高级主题”深入显式锁、AQS 与自定义同步器、原子变量与非阻塞算法,最后落到 Java 内存模型这一理论基础。 书中穿插大量贴近真实工程的示例与“危险”代码片段,帮助读者建立判断并发代码正确性的直觉。本书曾获第 16 届 Jolt 大奖提名,是 Java 后端、中间件与框架开发者绕不开的一本进阶读物。阅读前需具备一定的 Java 语法与面向对象基础。

编辑推荐

市面上的 Java 并发书大致分两类:一类讲 API 怎么调,一类讲原理讲到让人望而生畏。这本书罕见地两头都占:它的作者就是 java.util.concurrent 的设计者,讲的不是二手转述,而是一手设计意图。 最值得称道的是它的“工程感”。书中给出的不是孤立的语法点,而是判断标准:这段代码安全吗?这个锁会不会带来性能陷阱?这个线程池大小是否合理?为什么这个看似同步的类仍然会失效?作者用大量“正确 vs 错误”的对照代码,把抽象的 happens-before 规则落成可以照着检查的清单。 当然,这本书成书于 Java 5/6 时代,书中关于 GUI 单线程模型、部分性能对比的内容已经有些年代感,Java 8 之后出现的 CompletableFuture、并行流、虚拟线程等新特性也不在覆盖范围内。但正因如此,它更像是在打地基:把内存模型、可见性、锁的语义这些不变的底层概念讲透,后面学任何新框架都事半功倍。这也是它十几年长销、豆瓣评分稳定在 9 分以上的原因。

适合谁读

适合

  • 有 Java 基础、希望系统攻克并发与多线程的中高级开发者
  • 需要维护或排查线上并发问题的后端、中间件工程师
  • 准备阅读 JUC 源码、想理解其设计意图的框架学习者
  • 计算机专业高年级学生与研究生作为并发课程配套读物

不适合

  • 完全没有 Java 语法基础、尚未写过类的初学者
  • 只想速查 API 用法、需要即查即用手册的读者
  • 希望学习 Java 8 之后 CompletableFuture、虚拟线程等新特性的读者

阅读建议

  1. 第一遍通读第1—5章打牢线程安全与对象共享的基础,不要跳读第3章可见性。
  2. 第6—9章建议边读边用 Executor 框架重写自己项目里的线程创建代码,形成肌肉记忆。
  3. 第13—16章较硬,可配合 OpenJDK 中 JUC 源码与《Java 语言规范》第17章对照阅读。
  4. 读完后做一份“并发缺陷自查清单”,把书中的规则整理成团队代码评审条目。

出版社简介

机械工业出版社 中国 · 成立于 1950 年

机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。

目录

  1. 对本书的赞誉
  2. 译者序
  3. 前言
  4. 第1章 简介(并发简史 / 线程的优势 / 线程带来的风险 / 线程无处不在)
  5. 第一部分 基础知识
  6. 第2章 线程安全性(原子性、竞态条件、加锁机制、用锁来保护状态)
  7. 第3章 对象的共享(可见性、发布与逸出、线程封闭、不变性、安全发布)
  8. 第4章 对象的组合(设计线程安全的类、实例封闭、线程安全性的委托)
  9. 第5章 基础构建模块(同步容器类、并发容器、阻塞队列、同步工具类)
  10. 第二部分 结构化并发应用程序
  11. 第6章 任务执行(Executor框架、找出可利用的并行性)
  12. 第7章 取消与关闭
  13. 第8章 线程池的使用(配置与扩展ThreadPoolExecutor)
  14. 第9章 图形用户界面应用程序
  15. 第三部分 活跃性、性能与测试
  16. 第10章 避免活跃性危险(死锁、死锁的避免与诊断)
  17. 第11章 性能与可伸缩性(Amdahl定律、减少锁的竞争)
  18. 第12章 并发程序的测试(正确性测试、性能测试)
  19. 第四部分 高级主题
  20. 第13章 显式锁(Lock与ReentrantLock、读-写锁)
  21. 第14章 构建自定义的同步工具(条件队列、AbstractQueuedSynchronizer)
  22. 第15章 原子变量与非阻塞同步机制
  23. 第16章 Java内存模型
  24. 附录A 并发性标注
  25. 参考文献

常见问题

这本书适合零基础或刚学 Java 的人读吗?
不太适合。书中默认读者熟悉 Java 语法、异常、集合框架与基本的面向对象设计,开篇就直接讨论原子性和竞态条件。初学者建议先掌握 Java 基础并写过一两个多线程小程序,再读此书会顺畅很多。
2012 年的版本现在读会不会过时?
核心内容不过时。线程安全、可见性、锁语义、Java 内存模型、AQS 等底层机制至今未变,JUC 的设计思路也仍是现代并发的基础。但书中未覆盖 Java 8 的 CompletableFuture、并行流以及后续的虚拟线程,这部分需要另找资料补充。
它和《Java并发编程实践》(电子工业出版社2007年版)是同一本书吗?
是同一本英文原书 Java Concurrency in Practice 的不同中文译本。电子工业出版社2007年版由韩锴、方秒翻译,书名为《JAVA并发编程实践》;机械工业出版社2012年版由童云兰翻译,书名为《Java并发编程实战》,即通常所说的“Java 并发编程实战”。
这本书对面试或实际工作帮助大吗?
帮助很大。面试中常考的 happens-before、volatile 与 synchronized 区别、线程池参数与拒绝策略、AQS 原理、死锁排查等,书中都有系统讲解;工作中排查线程安全缺陷、合理配置线程池也能直接套用书里的判断方法。
读完需要多长时间?
全书 16 章约 300 页,按每周读 2—3 章、并动手敲示例的节奏,一般 6—8 周可以读完一遍。第13—16章建议放慢速度,配合源码阅读,二刷时再重点攻克。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

同一作者

同类高分