内容提要
- 并发理论
- 块结构并发
java.util.concurrent
包- 用分支/合并框架实现轻量并发
- Java内存模型(JMM)
本章会从基本概念开始,并在块结构并发上做短暂停留。在Java 5之前,这是唯一值得把玩的技术,就是搁在现在,也很值得玩味。之后,我们会介绍每个开发人员都应该了解的java.util.concurrent
包以及如何使用其提供的基本并发构建块。
我们会以新的分支/合并框架为结尾。看完本章后,你就有能力使用这些新的并发技术了。你还能掌握充分的理论知识,并以此为基础,能够完全理解本书后面讨论到的非Java语言的不同并发视图。
我们不打算在本章把所有的并发知识都讲完,先告诉你一些起步的知识就足够了。另外我们还会告诉你在编写并发代码时需要深入了解些什么,并阻止你在编写代码时涉足险境。但如果你想成为一名真正一流的多线程编程高手,只知道这里讲的知识还不够。这里向你推荐两本专门讨论Java并发编程的书,其中一本是Doug Lea写的《Java并发编程》(第二版,Prentice Hall,1999),另一本是Brian Goetz跟人合著的《Java并发编程实战》(Addison-Wesley Professional,2006)。
但我已经了解线程了!
这是开发人员最常犯的(也许是致命的)错误之一。他们自认为熟悉
Thread
,Runnable
和语言层面那些原始的基础Java并发机制就是合格的并发编程人员了。实际上,并发是个非常广泛的主题,即便是最好的开发人员,从事多线程开发工作多年,有丰富的经验,要想写出优质的多线程代码也很困难,而且很难保证不出问题。还有一点你应该注意,目前并发领域正如火如荼地开展着研究工作,这些研究肯定会对你所用到的Java及其他语言产生影响。如果非要我们挑一个在未来五年中很可能会改变行业惯例的计算机基础领域,那就是并发。
本章的目的是让你了解决定Java并发工作方式的底层平台机制。我们还会充分讨论通行的并发理论和词汇,让你理解其中涉及的问题,并教你认识到让并发正确工作的必要性和在这个过程中所遇到的困难。实际上,这里是我们的起点。