讀古今文學網 > Java程序員修煉之道 > 第4章 現代並發 >

第4章 現代並發

內容提要

  • 並發理論
  • 塊結構並發
  • 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)。

但我已經瞭解線程了!

這是開發人員最常犯的(也許是致命的)錯誤之一。他們自認為熟悉ThreadRunnable和語言層面那些原始的基礎Java並發機制就是合格的並發編程人員了。實際上,並發是個非常廣泛的主題,即便是最好的開發人員,從事多線程開發工作多年,有豐富的經驗,要想寫出優質的多線程代碼也很困難,而且很難保證不出問題。

還有一點你應該注意,目前並發領域正如火如荼地開展著研究工作,這些研究肯定會對你所用到的Java及其他語言產生影響。如果非要我們挑一個在未來五年中很可能會改變行業慣例的計算機基礎領域,那就是並發。

本章的目的是讓你了解決定Java並發工作方式的底層平台機制。我們還會充分討論通行的並發理論和詞彙,讓你理解其中涉及的問題,並教你認識到讓並發正確工作的必要性和在這個過程中所遇到的困難。實際上,這裡是我們的起點。