IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Java technology  >

不仅仅是另一本并发性图书

为什么 Java Concurrency in Practice 应当位于夏季阅读列表之首

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Sing Li (westmakaha@yahoo.com), 作者, Wrox Press

2006 年 8 月 14 日

如果以前没有购买 Java Concurrency in Practice(Goetz 等,Addison-Wesley,2006 年),那么现在该购买了。经验丰富的 Java™ 开发人员(和流行书作者)Sing Li 介绍了为什么即使并发性还没进入您的日常开发,也应当阅读这本重要的图书。该书由 developerWorks 的长期作者和并发性专家 Goetz 执笔。

线程透明世界中的并发性问题

随着诸如 Java EE 5 之类现代组件化服务器端开发框架的到来,似乎不再需要花费数天来处理并发性问题。这些成熟复杂的软件栈接手了危险的线程管理和并发性控制任务,让人们可以只专注于应用程序的业务逻辑。但是,在并发性问题发生时,问题通常是如此紧迫,甚至能击倒项目团队,而且,在一些意外情况下,会毁掉整个项目。更糟的是,因为现在许多人在整个开发人员生命期内都无需担心并发性、饥饿和死锁之类的问题,所以我们通常缺少处理这类问题的能力。





回页首


并发性历史

公平地说,对并发性的流行看法,随着时代而变化。最明显的变化是并发性的环境和开发人员对并发性元素拥有的控制程度。

得到这本书!

现在就得到 Java Concurrency in Practice

在微处理器革命的早期,重点是使用汇编或编译语言的处理器中断处理和抢占式多任务。随着多任务操作系统(OS)的成熟,以及世界向以 OS API 为核心的环境的转变,OS 管理的同步和进程间通信(IPC)机制成为了主流。随着开发世界转向基于虚拟机的平台(即 Java 和 .Net 平台),更高的应用程序级的并发性控制也成为了必要。这些并发性机制幕后实际实现的低层细节,不论是使用底层的 OS API 还是直接使用硬件中断机制,都变得不太重要了。并发性协约和保证,现在要么来自开发框架(例如 Java EE 5),要么来自平台的 API(例如 java.util.concurrent)。

独特的挑战

在并发性环境发展的每个新阶段,可以从中寻找有效处理问题的智慧的知识池,都有很大的不同。虽然都是在一套相同的熟悉的基本概念元素基础上形成的,但每个阶段都有自己一套独特的挑战。





回页首


迎接挑战

所以,一本关于并发性的图书,必须勇敢地面对当前遇到的挑战。它必须捕捉相关的问题模式,并提出可行的解决方案 —— 或者基于当代最佳实践,或者基于过去使用的技术形成基本问题的解决方案。

同样,您会发现关于并发性的书籍非常稀少。它们不仅不是出版商愿意寻找的热门分类,而且适合的读者和愿意花时间研究和编写这类图书的人也极为稀少。

热情的工作

Java Concurrency in Practice 这本书诞生自 Brian Goetz 迎接 Java 开发平台上当前并发性挑战的个人热情。Brian 对这一领域的兴趣和贡献众所周知,而且有很好的记录(请参见 参考资料,阅读他在 developerWorks 上发表的 20 多篇关于并发性的文章),这让他在 Java 并发性社区成为受到高度尊重的人物。

示例章节

Java Concurrency in Practice 的内容涉及多个层次上的并发性,包括出现的低级问题和如何有效地处理它们,还有 Java 5 中的库增强如何减轻了这些问题。

Chapter 2: Thread Safety 中,Brian 研究了线程安全性的意义,并提供了可以保证类和应用程序免遭并发性问题的具体建议。Brian 先从对易变状态不受保证的共享存取缺陷开始研究,演示了像封装、不变性、强制不变以及强规范这类最佳实践如何能够减轻这种风险。

然后他转换到研究一些现代的应用程序代码。通过一组代码示例,通过内存计数器的实现(并发修改-写入模式),他揭示了在跨请求的共享状态中线程安全性问题的出现方式。但是不必失望,他还介绍了内在锁(同步块)的使用如何能够在这些场景中确保线程安全性。Brian 总结这章时,提供了一些对当前最佳实践的深入思考,在锁定粒度方面以及代码/应用程序简单性相比性能之间的微妙平衡,也提供了建议。

如果真的是闲时才读书,那么从书籍 相伴的 Web 站点 上可以下载的 Chapter 6: Task Execution 会是更好的选择。它介绍了 Java 5 中添加的一些更高层次的并发性抽象,例如线程池,开发人员可以用它来构建并发应用程序。

捕捉当代最佳实践和研究智慧

不论一个作者如何聪明,创作一本关于并发性的当代而且实用的图书,都需要来自 Java 平台/应用程序并发性领域中跨部门的参与者提供的最佳实践和可行的解决方案(包括研究和应用两个层次)。除了 Brian 自己的研究、经验和热心读者的贡献之外,本书还吸取了一些并发性前沿人员的真知灼见,包括 Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes 和 Doug Lea。

覆盖范围

Java Concurrency in Practice 中,Brian 从最基本的知识开始介绍。本书分成四部分:

  • 第 1 部分开始时集中于在 Java 平台上创建线程应用程序以及在同步对共享资源的访问时包含的细微之处。贯穿本书都用许多简洁的代码示例演示了问题和可行的解决方案。

  • 第 2 部分研究了 Java SE 5 提供的更高层次的线程执行构造,以及如何最好地把它们应用到现实世界中的不同场景,其中整合了一些观察到的最佳实践和最新的研究主张。

  • 第 3 部分研究了以前其他书籍曾经试图避免的真正的困难问题 —— 解决现实世界的生存保证、性能、可伸缩性和可测试性需求。每个人都认识到在这些领域没有包治百病的解决方案。Brian 把当前的最佳实践调查与相关的研究结果相结合,提供了一些可行的替代方案。

  • 第 4 部分介绍了一些在开发中可能适用的高级并发性技术,包括显式锁、定制同步器、非阻塞同步,还介绍了低级的 Java 内存模型。

可以从完整 目录 了解每章的细节。

结束语

当我们从今天以应用程序为核心的开发平台转移到不远的未来支持多核处理器的操作系统和平台机制时,Java Concurrency in Practice 代表了这个容易出错的领域当前最新的并发性实践和研究。我强烈建议您去购买这本优秀的图书,并阅读它。






回页首


下载

描述名字大小下载方法
Chapter 2j-goetzbookchapter2.pdf185KBHTTP
Table of Contentsj-goetzbookcontents.pdf60KBHTTP
关于下载方法的信息Get Adobe® Reader®


参考资料

学习
  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

  • Java Concurrency in Practice(Goetz 等,Addison-Wesley,2006 年):得到这本独特而高度实用的书,也不要错过 相伴的 Web 站点

  • Java 理论与实践(Brian Goetz,developerWorks):Brian 的长期 developerWorks 系列,包含几乎 50 篇文章,覆盖了并发性和其他许多有趣的主题。

  • Book Review: Java Concurrency in Practice(The Java Specialists' Newsletter,2006 年 4 月):Dr. Heinz Kabutz 提供了这个早期评论,指出 “Brian 的书是 Java 并发性主题上最值得一读的书……对于 Java 开发人员今天面对的问题来说既有用又相关。”

  • JDK 5.0 中的并发(Brian Goetz,developerWorks,2004 年 11 月):学习 Java 中的主要增强如何让代码更迅速、更具伸缩性、更可靠和更容易维护。

  • Java 技术专区:数百篇 Java 编程各方面的文章。

讨论


关于作者

Sing Li 的照片

Sing 是一位具有 20 多年行业经验的顾问和活跃的作者。他参与编写过 Beginning JavaServer PagesProfessional Apache Tomcat 5Pro JSP - Third Edition、 Early Adopter JXTA, Professional Jini、Beginning J2ME: From Novice to Professional, Third Edition以及其他许多书籍。Sing 还为技术杂志撰稿,并参与开放源码社区。他是开放源码、VOIP 和 P2P 运动的热心传播者。可以通过 westmakaha@yahoo.com 与 Sing 联系。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款