簡明高效的 Java 併發程式設計學習指南

weixin_33766168發表於2019-03-01

你好,我是寶令,《Java 併發程式設計實戰》專欄作者,很高興你能看到這篇內容。

對於一個Java程式設計師而言,能否熟練掌握併發程式設計是判斷他優秀與否的重要標準之一。因為併發程式設計是Java語言中最為晦澀的知識點,它涉及作業系統、記憶體、CPU、程式語言等多方面的基礎能力,更為考驗一個程式設計師的內功。

尤其是大資料時代的來臨,高併發更成為了家常便飯,工作中,你總是繞不開併發程式設計的任務,比如說,你想寫個程式,一邊從檔案中讀取資料,一邊還要做實時計算…所以,想成為一名資深的 Java 後端工程師,併發程式設計必須要牢牢把握。

在這裡,我就對 Java 併發程式設計的學習路徑做一個梳理,方便大家查漏補缺。同時,這些內容我在《Java 併發程式設計實戰》專欄裡面也做了系統的講解。

下面我們來看看具體的學習知識點。

一、掌握基礎概念

學習Java併發程式設計,第一步就是要打下堅實的基礎,把涉及的相關基礎概念都搞清楚。比如,深度認識Java記憶體模型、死鎖產生的原因和解決方案、執行緒間的協作機制,等等。

\"\"

可見性、原子性和有序性問題:併發程式設計Bug的源頭

二、拿下常見的併發工具類

Java經過這些年的發展,Java SDK併發包提供了非常豐富的功能,對於初學者來說可謂是眼花繚亂,好多人覺得無從下手。但是,Java SDK併發包乃是併發大師Doug Lea出品,堪稱經典,它內部一定是有章可循的。

所以,只有你把併發程式設計核心的問題搞清楚,回過頭來看Java SDK併發包,你才會有種豁然開朗的感覺:它不過是針對併發問題開發出來的工具而已。而此時的SDK併發包就可以任你“盤”了。

在專欄中,我會手把手帶你找到其中的章法及核心問題。
\"\"

三、對併發設計模式瞭如指掌

設計模式是成功經驗的總結和提煉,在程式設計領域,最知名的就是物件導向設計模式。同樣在併發程式設計領域,也有人總結和提煉出了一系列的設計模式。學習設計模式是快速提升你設計功底的捷徑。

來看看最常見的9種併發設計模式有哪些:
\"\"

四、產出自己的Java 併發程式設計全景圖

併發程式設計並不是一門相對獨立的學科,而是一個綜合學科,導致大家學習很有難度,容易注重細節而忘了全域性。這裡我有兩個建議:一個是“跳出來,看全景”;另一個是“鑽進去,看本質”。

1.“跳出來,看全景”

你應該也知道,學習最忌諱的就是“盲人摸象”,只看到區域性,而沒有看到全域性。所以,你需要從一個個單一的知識和技術中“跳出來”,高屋建瓴地看併發程式設計。當然,這首要之事就是你建立起一張全景圖。

結合我多年的工作經驗來看,併發程式設計領域可以抽象成三個核心問題:分工、同步和互斥。以下是我根據這三個核心問題製作的「併發程式設計全景圖」,可以讓你的知識成體系,所學知識也融匯貫通起來,由點成線,由線及面。
\"\"

2.“鑽進去,看本質”

但是光跳出來還不夠,還需要下一步,就是在某個問題上鑽進去,深入理解,找到本質。

所以在學習併發程式設計的過程中,我都會探索它背後的理論是什麼。比如,當看到Java SDK裡面的條件變數Condition的時候,我會下意識地問,“它是從哪兒來的?是Java的特有概念,還是一個通用的程式設計概念?”當我知道他來自管程的時候,我又會問,“管程被提出的背景和解決的問題是什麼?”這樣一路探索下來,我發現Java語言裡的併發技術基本都是有理論基礎的,並且這些理論在其他程式語言裡也有類似的實現。

所以,技術的本質是背後的理論模型。

學習攻略 | 如何才能學好併發程式設計?

上述很多知識點都會在我的專欄《Java併發程式設計實戰》中涉及到,我會站在理論、模型的角度講解Java併發,讓你融匯貫通,形成全面系統的併發程式設計知識體系。最終可以得心應手地解決各種併發難題,同時將這些知識用於其他程式語言。一分辛勞,三分收穫。

想成為“資深”Java工程師的朋友,首先要攻破的就是併發程式設計。我在極客時間剛上線了《Java併發程式設計實戰》,帶你全面系統提升你的併發程式設計能力,上新優惠68,強烈建議入手。

相關文章