Java提供了语言级的多线程支持,所以在Java 中使用多线程相对于在CC++当中使用多线程来说更加简单与快捷。除了Brian Goetz自己的研究、经验和热心读者的贡献之外,本书还吸取了一些并发性前沿人员的真知灼见,包括Tim Peierls. Joshua Bloch、Joseph Bowbeer、David Holmes和Doug Lea。在该书中,Brian Goetz从最基本的知识开始介绍,首先集中描述了在Java平台上创建线程应用程序以及同步对共字资源的访问时的细微之处;然后分析了Java SE 5提供的更高层次的线程执行构造,以及如何最好地把它们应用到现实世界中的不同场景,并整合了-些最佳实践和最新的研究主张;再就现实中的生存保证、性能、可伸缩性和可测试性的困难问题进行了分析,并把当前的最佳实践调查与相关的研究结果相结合,提供了一些可行的替代方案;最后介绍了一些在开发中可能适用的高级并发性技术,包括显式锁、定制同步器、原子变量与非阻塞同步,还介绍了低级的Java存储模型。同时,在全书贯穿了许多简洁的代码示例,用来演示问题和可行的解决方案。
当我们从今天以应用程序为核心的开发平台转移到不远的未来支持多核处理器的操作系统和平台机制时,《JAVA并发编程实践》代表了这个容易出错的领域当前最新的并发性实践和研究。
这是一本目前在Java并发性领域研究的编程图书中最值得一读的力作。随着计算机技术的不断迅速发展,各种各样的编程模型也越来越多,越来越复杂化与多样化。虽然当前CPU主频在不断升高,但是X86架构的硬件已经成为瓶颈,这种架构的CPU主频最高为4GHz,事实上目前3.6GHz主频的CPU已经接近顶峰,多线程编程模型不仅是目前提高应用性能的手段,更是下一代编程模型的核心思想。它的目的就是“最大限度地利用CPU资源”,当某一线程的处理不需要占用CPU而只需要IO等其他资源时,就可以让需要占用CPU资源的其他线程有机会获得CPU资源。因此,就目前来说,多线程编程模型仍是计算机系统架构的最有效的编程模型。
文末获取文中资料哦
(第1章)之后,本书分为4部分:
基础第1部分:
(第2~5章)关注于同步和线程安全的基本概念,以及如何使用类库提供的构建块组合线程安全类。第110页上,有一个“并发诀窍清单”总结了出现在第一部分中最重要的规则。
第2章(线程安全性)与第3章(共享对象)构成了全书的基础。几乎所有用来避免并发危险、创建线程安全类以及验证线程安全的规则都包括在这里。轻“理论”,重“实践”的读者可能会禁不住诱惑跳过这部分,而直接进入第2部分,但是在开始编写任何并发代码之前,一定要确保回过头来阅读这两章!
第4章所涵盖的技术,用于把线程安全类组合到更大的线程安全类中。
第5章(构建块)涵盖了平台核心库提供的并发构建块一线程安全的容器和同步工具(synchronizer)
构建并发应用程序第2部分:
(第6~9章)描述了如何利用线程提高并发应用程序的吞吐量或响应性。
第6章(任务执行)讲述如何识别可并行执行的任务,并在任务执行框架内部执行它们。
第7章讲到的技术可以让任务和线程在正常终止之前妥善地终止:区分并发应用程序是健壮的,还是仅仅可以将就工作的,有众多的因素,“程序如何处理取消与关闭”就是其中之一。
第8章(应用线程池)关注了-些任务执行框架中更为高级的特性。
第9章(GUI 应用程序)关注了用来提高单线程化子系统响应性的技术。
活跃度、性能和测试第3部分:
(第10~12章)涉及并发程序自身。要确保并发程序执行了你所希望它做的事情,而且性能是可以接受的。
第10 章(避免活跃度危险)描述了如何避免活跃度失败,活跃度失败会阻止程序继续向前执行。
第11章(性能和可伸缩性)涵盖的技术用来提高并发代码的性能和可伸缩性。
第12章(测试并发程序)涵盖的技术用来测试并发代码的正确性和性能。
高级主题第4部分(第13~16章):
涵盖的主题可能只会引起资深程序员的兴趣:它们是显式锁、原子变量、非阻塞算法和开发自定义的synchronizer.