【高並行】學好並行程式設計,必須掌握這些核心知識體系!!

2020-10-12 22:00:15

寫在前面

很多小夥伴問我:我在大學時候就學習了多執行緒,工作後,自己也看過不少有關多執行緒和並行程式設計的書籍和視訊,為啥真正到工作的時候,我還是不知道在專案中哪裡會用到並行程式設計。我知道有關於並行程式設計的各個知識點,但是沒辦法將這些知識點串起來,形成知識體系。冰河,你能不能推一篇文章,講講如何學習並行程式設計,如何將並行程式設計的各個知識點串成知識體系呢?今天,我們就一起來探討下有關於並行程式設計的核心知識體系。

有關更多並行程式設計的知識,小夥伴們可以到【高並行專題】進行系統學習。

高並行專題的連結地址為:http://r6d.cn/r8x4

並行程式設計的核心

我們先來看下並行程式設計的三大核心知識圖。

在這裡插入圖片描述

核心問題

要想學好並行程式設計,首先要理解三個核心的問題:分工,同步和共同作業(《【高並行】要想學好並行程式設計,關鍵是要理解這三個核心問題》)。

詭異的問題

並行程式設計並不像普通業務中的CRUD那麼簡單,往往在並行程式設計中會出現各種各樣詭異的Bug問題(《【高並行】導致並行程式設計頻繁出問題的「幕後黑手」》),而且這些問題也不好復現。究其根本原因,是作業系統的CPU與記憶體和I/O存在速度差異,而作業系統和編譯器在解決這些速度差異帶來的問題時,又引入了可見性(《【高並行】解密導致詭異並行問題的第一個幕後黑手——可見性問題》)、原子性(《【高並行】解密導致並行問題的第二個幕後黑手——原子性問題》)、有序性(《【高並行】解密導致並行問題的第三個幕後黑手——有序性問題》)問題,而這三個核心問題,就是導致並行程式設計出現各種詭異Bug的根本所在。

如何解決問題

在Java中,如何解決並行程式設計中的可見性、原子性和有序性問題呢?在Java中提供了記憶體模型和互斥鎖的方案來解決這些問題。在Java的記憶體模型中,有一個很重要的原則,那就是:Happens-Before原則(《何為Happens-Before原則?這次徹底懂了!》)。通過Java的記憶體模型,能夠解決可見性和有序性問題(《【高並行】如何解決可見性和有序性問題?這次徹底懂了!》),對於如何解決原子性問題,我們使用的是互斥鎖方案(《【高並行】如何使用互斥鎖解決多執行緒的原子性問題?這次終於明白了!》)。

互斥鎖帶來的問題

互斥鎖在是解決並行問題的核心方案,但是一不留神就會引起死鎖(《【高並行】高並行環境下詭異的加鎖問題(你加的鎖未必安全)》、《【高並行】優化加鎖方式時竟然死鎖了!!》)

優化加鎖方式

既然互斥鎖會帶來死鎖的問題,那我們如何優化加鎖的方式呢?(《【高並行】高並行場景下如何優化加鎖方式?看完這篇我確實明白了!!》)

執行緒知識

執行緒的生命週期(《【高並行】執行緒的生命週期其實沒有我們想象的那麼簡單!!》)、高並行場景下我們到底建立多少執行緒合適(《【高並行】高並行場景下建立多少執行緒才合適?一條公式幫你搞定!!》)?為什麼區域性變數就是執行緒安全的(《【高並行】終於弄懂為什麼區域性變數是執行緒安全的了!!》)?為什麼很多小夥伴面試會栽在InterruptedException上(《【高並行】由InterruptedException異常引發的思考》)?我可以用Java中的物件導向的思想寫好並行程式,你信嗎(《【高並行】信不信?以物件導向的思想是可以寫好高並行程式的!》)?

核心案例

秒殺系統架構解密(《【高並行】高並行秒殺系統架構解密,不是所有的秒殺都是秒殺!》)

分散式鎖架構解密(《【高並行】高並行分散式鎖架構解密,不是所有的鎖都是分散式鎖!!》)

分散式限流理論(《【高並行】如何實現億級流量下的分散式限流?這些理論你必須掌握!!》)

分散式限流演演算法(《【高並行】如何實現億級流量下的分散式限流?這些演演算法你必須掌握!!》)

實現HTTP介面限流(《【高並行】億級流量場景下如何為HTTP介面限流?看完我懂了!!》)

實現分散式限流(《【高並行】億級流量場景下如何實現分散式限流?看完我徹底懂了!!》)

更多內容

有關更多並行程式設計的知識,小夥伴們可以到【高並行專題】進行系統學習。

高並行專題的連結地址為:http://r6d.cn/r8x4

好了,今天就到這兒吧,我是冰河,我們下期見!

冰 河 CSDN認證部落格專家 hive storm hadoop
微信搜一搜【冰河技術】微信公眾號,關注這個有深度的程式設計師,每天閱讀超硬核技術乾貨,公眾號內回覆【PDF】有我準備的一線大廠面試資料和我原創的超硬核PDF技術檔案,以及我為大家精心準備的多套簡歷模板(不斷更新中),希望大家都能找到心儀的工作,學習是一條時而鬱鬱寡歡,時而開懷大笑的路,加油。如果你通過努力成功進入到了心儀的公司,一定不要懈怠放鬆,職場成長和新技術學習一樣,不進則退。如果有幸我們江湖再見!