更新時間:2019-11-13 10:17:28 來源:動力節(jié)點 瀏覽2660次
對于一個Java程序員而言,能否熟練掌握并發(fā)編程是判斷他優(yōu)秀與否的重要標(biāo)準(zhǔn)之一。因為并發(fā)編程是Java語言中最為晦澀的知識點,它涉及操作系統(tǒng)、內(nèi)存、CPU、編程語言等多方面的基礎(chǔ)能力,更為考驗一個程序員的內(nèi)功。
尤其是大數(shù)據(jù)時代的來臨,高并發(fā)更成為了家常便飯,工作中,你總是繞不開并發(fā)編程的任務(wù),比如說,你想寫個程序,一邊從文件中讀取數(shù)據(jù),一邊還要做實時計算…所以,想成為一名資深的Java后端工程師,并發(fā)編程必須要牢牢把握。
在這里,我就對Java并發(fā)編程的學(xué)習(xí)路徑做一個梳理,方便大家查漏補(bǔ)缺。
下面我們來看看具體的學(xué)習(xí)知識點。
一、掌握基礎(chǔ)概念
學(xué)習(xí)Java并發(fā)編程,第一步就是要打下堅實的基礎(chǔ),把涉及的相關(guān)基礎(chǔ)概念都搞清楚。比如,深度認(rèn)識Java內(nèi)存模型、死鎖產(chǎn)生的原因和解決方案、線程間的協(xié)作機(jī)制,等等。
可見性、原子性和有序性問題:并發(fā)編程Bug的源頭
二、拿下常見的并發(fā)工具類
Java經(jīng)過這些年的發(fā)展,JavaSDK并發(fā)包提供了非常豐富的功能,對于初學(xué)者來說可謂是眼花繚亂,好多人覺得無從下手。但是,JavaSDK并發(fā)包乃是并發(fā)大師DougLea出品,堪稱經(jīng)典,它內(nèi)部一定是有章可循的。
所以,只有你把并發(fā)編程核心的問題搞清楚,回過頭來看JavaSDK并發(fā)包,你才會有種豁然開朗的感覺:它不過是針對并發(fā)問題開發(fā)出來的工具而已。而此時的SDK并發(fā)包就可以任你“盤”了。
在專欄中,我會手把手帶你找到其中的章法及核心問題。
三、對并發(fā)設(shè)計模式了如指掌
設(shè)計模式是成功經(jīng)驗的總結(jié)和提煉,在編程領(lǐng)域,最知名的就是面向?qū)ο笤O(shè)計模式。同樣在并發(fā)編程領(lǐng)域,也有人總結(jié)和提煉出了一系列的設(shè)計模式。學(xué)習(xí)設(shè)計模式是快速提升你設(shè)計功底的捷徑。
來看看最常見的9種并發(fā)設(shè)計模式有哪些:
四、產(chǎn)出自己的Java并發(fā)編程全景圖
并發(fā)編程并不是一門相對獨立的學(xué)科,而是一個綜合學(xué)科,導(dǎo)致大家學(xué)習(xí)很有難度,容易注重細(xì)節(jié)而忘了全局。這里我有兩個建議:一個是“跳出來,看全景”;另一個是“鉆進(jìn)去,看本質(zhì)”。
1.“跳出來,看全景”
你應(yīng)該也知道,學(xué)習(xí)最忌諱的就是“盲人摸象”,只看到局部,而沒有看到全局。所以,你需要從一個個單一的知識和技術(shù)中“跳出來”,高屋建瓴地看并發(fā)編程。當(dāng)然,這首要之事就是你建立起一張全景圖。
結(jié)合我多年的工作經(jīng)驗來看,并發(fā)編程領(lǐng)域可以抽象成三個核心問題:分工、同步和互斥。以下是我根據(jù)這三個核心問題制作的「并發(fā)編程全景圖」,可以讓你的知識成體系,所學(xué)知識也融匯貫通起來,由點成線,由線及面。
2.“鉆進(jìn)去,看本質(zhì)”
但是光跳出來還不夠,還需要下一步,就是在某個問題上鉆進(jìn)去,深入理解,找到本質(zhì)。
所以在學(xué)習(xí)并發(fā)編程的過程中,我都會探索它背后的理論是什么。比如,當(dāng)看到JavaSDK里面的條件變量Condition的時候,我會下意識地問,“它是從哪兒來的?是Java的特有概念,還是一個通用的編程概念?”當(dāng)我知道他來自管程的時候,我又會問,“管程被提出的背景和解決的問題是什么?”這樣一路探索下來,我發(fā)現(xiàn)Java語言里的并發(fā)技術(shù)基本都是有理論基礎(chǔ)的,并且這些理論在其他編程語言里也有類似的實現(xiàn)。
以上就是動力節(jié)點java學(xué)院小編針對“高效學(xué)習(xí)Java并發(fā)編程學(xué)習(xí)路線”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
零基礎(chǔ)自學(xué)java教程推薦
最新java視頻教程免費下載(從入門到精通):http://m.dabaquan.cn/video.html
零基礎(chǔ)java自學(xué)教程:http://m.dabaquan.cn/tutorial_java_se/
相關(guān)推薦
零基礎(chǔ)學(xué)Java編程,這些內(nèi)容你一定要知道
學(xué)習(xí)Java編程了解一些免費Java開發(fā)工具
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743