序
? 為什麼要寫這本書
隨著網際網路的不斷發展,CPU 硬體的核心數也在不斷提升,並行程式設計越來越普及,但是並行程式設計並不像其他業務那樣簡單明了。
在撰寫並行程式時,往往會出現各種各樣的Bug,這些Bug 常常以某種「詭異」的形式出現,然後迅速消失,並且在大部分場景下難以複現。所以,高並行程式設計著實是一項讓程式設計師頭疼的技術。
本書從實際需求出發,全面細緻地介紹了高並行程式設計的基礎知識、核心原理、實戰案例和系統架構等內容。每個章節都根據實際需要配有相關的原理圖和流程圖,在實戰案例篇,還會提供完整的實戰案例原始程式。書中的每個解決方案都經過高並行、大流量的生產環境的考驗,可以用於解決實際生產環境中的高並行問題。透過閱讀和學習本書,讀者可以更加全面、深入、透徹地理解高並行程式設計知識,提高對高並行程式設計問題的處理能力和專案實戰能力,並站在更高的層面解決高並行程式設計系統架構問題。
? 讀者對象
■網際網路從業人員。
■中高級開發人員。
■架構師。
■技術經理。
■技術專家。
■想轉行從事高並行程式設計的人員。
■需要系統學習高並行程式設計的開發人員。
■需要提高並行程式設計開發水準的人員。
■需要時常查閱高並行程式設計技術和開發案例的人員。
? 本書特色
1. 系統介紹高並行程式設計的知識
目前,圖書市場少有全面細緻地介紹有關高並行程式設計的基礎知識、核心原理、實戰案例和系統架構的圖書,多從其中一兩個角度入手講解。本書從以上四方面入手,全面、細緻並且層層遞進地介紹了高並行程式設計相關知識。
2. 大量圖解和開發案例
為了便於理解,筆者在高並行程式設計的基礎知識、核心原理和系統架構章節中配有大量的圖解和圖表,在實戰案例章節中配有完整的高並行程式設計案例。讀者按照本書的案例學習,並運行案例程式,能夠更加深入地理解和掌握相關知識。另外,這些案例程式和圖解的draw.io 原文件會一起收錄於隨書資料裡。讀者也可以造訪下面的連結,獲取完整的實戰案例原始程式和相關的隨書資料。
■GitHub:github.com/binghe001/mykit-concurrent-principle。
■Gitee:gitee.com/binghe001/mykit-concurrent-principle。
3. 案例應用性強
對於高並行程式設計的各項技術點,書中都配有相關的典型案例,具有很強的實用性,方便讀者隨時查閱和參考。
4. 具有較高的實用價值
書中大量的實戰案例來自筆者對實際工作的複習,尤其是實戰案例篇與系統架構篇涉及的內容,其中的完整案例稍加修改與完善便可應用於實際的生產環境中。
? 本書內容及知識系統
第1篇 基礎知識(第1~2章)
本篇簡單地介紹了作業系統執行緒排程的相關知識和並行程式設計的基礎知識。作業系統執行緒排程的知識包括馮· 諾依曼系統結構、CPU 架構、作業系統執行緒和Java 執行緒與作業系統執行緒的關係。並行程式設計的基礎知識包括並行程式設計的基本概念、並行程式設計的風險和並行程式設計中的鎖等。
第2篇 核心原理(第3~14章)
本篇使用大量的圖解詳細介紹了並行程式設計中各項技術的核心原理,涵蓋並行程式設計的三大核心問題、並行程式設計的本質問題、原子性的核心原理、可見性與有序性核心原理、synchronized 核心原理、AQS核心原理、Lock 鎖核心原理、CAS 核心原理、鎖死的核心原理、鎖最佳化、執行緒池核心原理和ThreadLocal 核心原理。
第3篇 實戰案例(第15~18章)
本篇在核心原理篇的基礎上,實現了4 個完整的實戰案例,包括手動開發執行緒池實戰、基於CAS 實現自旋鎖實戰、基於讀/ 寫鎖實現快取實戰和基於AQS 實現可重入鎖實戰。每個實戰案例都是核心原理篇的落地實現,掌握這4 個實戰案例的實現方式,有助我們更進一步地在實際專案中開發高並行程式。
第4篇 系統架構(第19~20章)
本篇以高並行、大流量場景下典型的分散式鎖架構和秒殺系統架構為例,深入剖析了分散式鎖和秒殺系統的架構細節,讓讀者能夠站在更高的架構層面來理解高並行程式設計。
? 如何閱讀本書
■對於沒有接觸過高並行程式設計或高並行程式設計技術薄弱的讀者,建議按照順序從第1 章開始閱讀,並實現書中的每一個案例。
■對於有一定多執行緒和並行程式設計基礎的讀者,可以根據自身實際情況,選擇性地閱讀相關篇章。
■對本書中涉及的高並行程式設計案例,讀者可以先自行思考其實現方式,再閱讀相關內容,可達到事半功倍的學習效果。
■可以先閱讀一遍書中的高並行程式設計案例,再閱讀各種技術對應的原理細節,理解會更加深刻。
? 勘誤和支援
由於作者的水準有限,撰寫時間倉促,書中難免會出現一些錯誤或不妥之處,懇請讀者批評指正。如果讀者對本書有任何建議或想法,請聯繫筆者。
電子郵件:1028386804@qq.com。
? 致謝
感謝蔣濤(CSDN 創始人、總裁)、鄒欣(CSDN 副總裁)、右軍(螞蟻金服資深技術專家)、季敏(阿里中介軟體分散式事務團隊負責人)、於雨(Dubbo-go 社區負責人)、張開濤(高德資深技術專家)、孫玄(奈學科技創始兼CEO、58 集團前技術委員會主席)、沈劍(網際網路架構專家、公眾號「架構師之路」作者)、程軍(餓了嗎前技術總監、公眾號「軍哥手記」作者)、李鵬雲(杭州任你說智慧科技CTO)、李偉(Apache RocketMQ 北京社區聯合發起人)、駱俊武(京東零售架構師)、Mr.K(「技術領導力」公眾號作者、某電子商務公司CTO)、「純潔的微笑(純潔的微笑」公眾號作者)、翟永超(公眾號「程式猿DD」維護人、《Spring Cloud 微服務實戰》作者)(以上排名不分先後)等行業大佬對本書的大力推薦。
感謝作者技術社區的兄弟姐妹們,感謝你們長期對社區的支援和貢獻。
你們的支援是我寫作的最大動力。
感謝我的團隊和許許多多一起合作、交流過的朋友們,感謝部落格、公眾號的粉絲,以及在我部落格、公眾號留言及鼓勵我的朋友們。
感謝電子工業出版社博文視點的張晶編輯,在這幾個月的時間中始終支援我寫作,你的鼓勵和幫助引導我順利完成全部書稿。
感謝我的家人,他們都在以自己的方式在我寫作期間默默地給予我支援與鼓勵,並時時刻刻為我灌輸著信心和力量!
最後,感謝所有支援、鼓勵和幫助過我的人。謹以此書獻給我最親愛的家人,以及許多關注、認可、支援、鼓勵和幫助過我的朋友們!
冰河