Follow me on GitHub

读书 | Java 并发编程实战

Java 并发编程实战 是 Java 并发编程领域的重量级图书,作者阵容异常强大,都是 JSR 166 专家组成员,设计实现了 Java 的主要并发工具,相信 Java 司机们对此都不陌生。

几年前在学校的时候我就读过本书,那时缺乏相关背景和基础,只能读懂二三成,当时感觉并发编程好难啊 :(

如今工作了两年,也算有了些经验,再次拿起本书,已经没有了当初的晦涩难懂,取而代之的是大呼过瘾,让人手不释卷。整个 8 月里,早晨上班之前读一个小时,加上几个周末,竟然一个月就读完了。

这遍大约读懂了八成,相比之前进步巨大,算是入门了基于线程与锁的并发编程,读完本书后,我想起 Akka 文档中的一节 Why modern systems need a new programming model,该文简单“抨击”了线程与锁模型的种种不足,虽然 Actor 模型也并非银弹,但正确使用锁的难度的确颇高,对于 Java 司机而言,起码读完本书才能开始正确地使用锁,更别说实际使用中的各种坑了。

回到本书,我认为可以从逻辑上分为两部分:

  • 并发编程的基本概念:线程安全、安全发布、线程安全对象的设计、任务取消与关闭、活跃性(死锁、活锁、饥饿)、无锁并发等;
  • Java 并发工具介绍:线程池、同步数据结构、并发数据结构、内置锁与内置条件队列、显式锁 Lock 与显式条件队列 Condition,以及用 AbstractQueuedSynchronizer 自定义同步工具;

不夸张的说,所有章节都很精彩,信息量非常大,值得反复阅读,放弃那些网上七拼八凑的博客,以及大部分国产书吧,一本在手,天下我有!

另外,从本书学到是并发编程的通用知识,说放之四海而皆准有点夸张,但绝非局限于 Java 语言。

最后,本书主要介绍基于线程与锁模型的并发,还有诸如 Actor 模型、CSP 模型等其他模型,这些模型不在本书讨论范围内,毕竟本书出版时间很早(2006),而 Actor 和 CSP 虽然出现很早,但也是近几年才进入普罗大众的眼球,想要了解更多并发模型,可以参考 七周七并发模型