- Java多線程編程實(shí)戰(zhàn)指南:設(shè)計模式篇(第2版)
- 黃文海
- 2014字
- 2021-10-15 19:24:51
前言
隨著現(xiàn)代CPU的生產(chǎn)工藝從提升CPU主頻轉(zhuǎn)向多核化,即在一塊芯片上集成多個CPU內(nèi)核(Core),以往靠提升CPU自身處理能力來提升軟件計算性能的這種“免費(fèi)午餐”不復(fù)存在。在此背景下,多線程編程在充分利用計算資源、提高軟件服務(wù)質(zhì)量方面扮演了越來越重要的角色。然而,多線程編程并非一個簡單地使用多個線程進(jìn)行編程的數(shù)量問題,其還有自身的問題。好比俗話說的“一個和尚打水喝,兩個和尚挑水喝,三個和尚沒水喝”,簡單地使用多個線程進(jìn)行編程可能導(dǎo)致更加糟糕的計算效率。
設(shè)計模式相當(dāng)于軟件開發(fā)領(lǐng)域的“三十六計”,它為特定背景下反復(fù)出現(xiàn)的問題提供了一般性解決方案。多線程編程相關(guān)的設(shè)計模式為我們恰當(dāng)?shù)厥褂枚鄠€線程進(jìn)行編程并達(dá)到提升軟件服務(wù)質(zhì)量這一目的提供了指引和參考。當(dāng)然,設(shè)計模式不是菜譜。即便其是菜譜,我們也不能指望照著菜譜就能做出一道美味可口的菜肴,但我們又不能因此而否認(rèn)菜譜存在的價值。
可惜的是,國外與多線程編程相關(guān)的設(shè)計模式圖書多數(shù)采用C++作為描述語言,且書中所舉的例子又多與應(yīng)用開發(fā)人員的實(shí)際工作經(jīng)歷相去甚遠(yuǎn)。本書作為國內(nèi)首部介紹多線程編程相關(guān)設(shè)計模式的原創(chuàng)圖書,希望能夠在為Java開發(fā)者普及多線程編程相關(guān)的設(shè)計模式方面開一個頭。
本書采用Java語言和UML(Unified Modeling Language)作為描述語言,并結(jié)合筆者多年工作經(jīng)歷和相關(guān)實(shí)踐經(jīng)驗(yàn),介紹了多線程環(huán)境下常用設(shè)計模式的來龍去脈:各個設(shè)計模式是什么樣的、典型的實(shí)際應(yīng)用場景、實(shí)際應(yīng)用時需要注意的相關(guān)事項(xiàng),以及各個設(shè)計模式的可復(fù)用實(shí)現(xiàn)代碼。
本書第1章將對Jave多線程編程實(shí)戰(zhàn)基礎(chǔ)進(jìn)行回顧,雖然這一章講的是基礎(chǔ),但重點(diǎn)仍然是實(shí)戰(zhàn)。所謂“溫故而知新”,有一定多線程編程基礎(chǔ)、經(jīng)驗(yàn)的讀者也不妨快速閱讀一下這一章,說不定會有新的收獲。
本書第2章從通用意義上介紹了“設(shè)計模式”這一概念,并引入了“多線程設(shè)計模式”。本書后續(xù)章節(jié)都假定讀者已經(jīng)掌握了這一章介紹的知識。
本書第3章到第14章將逐一詳細(xì)講解與多線程編程相關(guān)的12個常用設(shè)計模式。針對每個設(shè)計模式,相應(yīng)章節(jié)會從以下幾個方面進(jìn)行詳細(xì)講解。
簡介 這部分將簡要介紹相應(yīng)設(shè)計模式的由來及核心思想,以便讀者能夠快速地對相應(yīng)的設(shè)計模式有一個初步認(rèn)識。
架構(gòu) 這部分會從靜態(tài)(類及類之間的結(jié)構(gòu)關(guān)系)和動態(tài)(類之間的交互)兩個角度對相應(yīng)的設(shè)計模式進(jìn)行詳細(xì)講解。架構(gòu)分別使用UML類圖(Class Diagram)和序列圖(Sequence Diagram)對模式的靜態(tài)和動態(tài)兩個方面進(jìn)行描述。
實(shí)戰(zhàn)案例解析 在相應(yīng)設(shè)計模式架構(gòu)的基礎(chǔ)上,這部分會給出相關(guān)的實(shí)戰(zhàn)案例并對其進(jìn)行解析。不同于教科書式的范例,實(shí)戰(zhàn)案例強(qiáng)調(diào)的是“實(shí)戰(zhàn)”。因此在實(shí)戰(zhàn)案例解析中,我們會先提出實(shí)戰(zhàn)案例中面臨的實(shí)際問題,并在此基礎(chǔ)上結(jié)合相應(yīng)的設(shè)計模式講解如何解決這些問題。在實(shí)戰(zhàn)案例解析中,我們會給出相關(guān)的Java代碼,并講解這些代碼與相應(yīng)的設(shè)計模式架構(gòu)間的對應(yīng)關(guān)系,以便讀者進(jìn)一步理解相應(yīng)的設(shè)計模式。為了便于讀者進(jìn)行實(shí)驗(yàn),本書給出的實(shí)戰(zhàn)案例代碼都力求做到可運(yùn)行。實(shí)戰(zhàn)案例解析有助于讀者進(jìn)一步理解相應(yīng)的設(shè)計模式,并體驗(yàn)相應(yīng)設(shè)計模式的應(yīng)用場景。建議讀者在閱讀這部分時先關(guān)注重點(diǎn),即實(shí)戰(zhàn)案例中我們要解決哪些問題,相應(yīng)的設(shè)計模式又是如何解決這些問題的,以及實(shí)戰(zhàn)案例代碼與相應(yīng)的設(shè)計模式架構(gòu)間的對應(yīng)關(guān)系。而代碼中與設(shè)計模式非強(qiáng)相關(guān)的細(xì)節(jié)則可以稍后關(guān)注。
評價與實(shí)現(xiàn)考量 這部分會對相應(yīng)的設(shè)計模式在實(shí)現(xiàn)和應(yīng)用過程中需要注意的一些事項(xiàng)、問題進(jìn)行講解,并討論應(yīng)用設(shè)計模式所帶來的優(yōu)缺點(diǎn)。另外,也會討論相應(yīng)設(shè)計模式的典型應(yīng)用場景。
可復(fù)用實(shí)現(xiàn)代碼 這部分會給出相應(yīng)設(shè)計模式的可復(fù)用實(shí)現(xiàn)代碼。編寫設(shè)計模式的可復(fù)用實(shí)現(xiàn)代碼有助于讀者進(jìn)一步理解相應(yīng)的設(shè)計模式及其在實(shí)現(xiàn)和應(yīng)用過程中需要注意的相關(guān)事項(xiàng)和問題,也便于讀者在實(shí)際工作中應(yīng)用相應(yīng)的設(shè)計模式。
Java標(biāo)準(zhǔn)庫實(shí)例 考慮到Java標(biāo)準(zhǔn)庫的API設(shè)計過程中已經(jīng)應(yīng)用了許多設(shè)計模式,本書將盡可能地給出相應(yīng)的設(shè)計模式在Java API中的應(yīng)用情況。
相關(guān)模式 設(shè)計模式不是孤立存在的,一個具體的設(shè)計模式往往與其他設(shè)計模式之間存在某些聯(lián)系。這部分會描述相應(yīng)的設(shè)計模式與其他設(shè)計模式之間存在的關(guān)系。這當(dāng)中可能涉及GOF(Gang Of Four)的設(shè)計模式,這類設(shè)計模式并不在本書的討論范圍之內(nèi)。有需要這類知識的讀者,請自行參考相關(guān)圖書。
如果說本書第3~14章介紹的是“三十六計”中的各個基礎(chǔ)計策,那么本書第15章則介紹了“三十六計”中的“連環(huán)計”——各個多線程設(shè)計模式彼此之間存在的聯(lián)系。
本書第2版除更正了第1版中的錯誤之外,主要更新內(nèi)容如下。
? 內(nèi)容優(yōu)化:新增了JDK 8、JDK 9中與多線程設(shè)計模式相關(guān)的內(nèi)容。
? 代碼優(yōu)化:對代碼進(jìn)行了重構(gòu),并重新排版,使代碼部分重點(diǎn)更突出、更易于閱讀。
? 提高了插圖的清晰度。
另外,為了保證書中的鏈接地址可以及時更新,不至于過期失效,本書專門將所有鏈接地址放到“Java多線程編程鏈接地址”文檔中,如正文中標(biāo)有參見鏈接[1]、鏈接[2]等字樣時,可在該文檔中查找相關(guān)鏈接。讀者可在http://www.broadview.com.cn/38245頁面下載或通過“讀者服務(wù)”中提供的方式獲取“Java多線程編程鏈接地址”文檔。
- Spring Boot+Spring Cloud+Vue+Element項(xiàng)目實(shí)戰(zhàn):手把手教你開發(fā)權(quán)限管理系統(tǒng)
- Android 7編程入門經(jīng)典:使用Android Studio 2(第4版)
- Kotlin Standard Library Cookbook
- Elasticsearch for Hadoop
- MongoDB,Express,Angular,and Node.js Fundamentals
- Python深度學(xué)習(xí)原理、算法與案例
- Procedural Content Generation for C++ Game Development
- SQL Server 2016 從入門到實(shí)戰(zhàn)(視頻教學(xué)版)
- Programming Microsoft Dynamics? NAV 2015
- Python數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南(全彩)
- 從零開始學(xué)Selenium自動化測試:基于Python:視頻教學(xué)版
- 關(guān)系數(shù)據(jù)庫與SQL Server 2012(第3版)
- Mastering ArcGIS Server Development with JavaScript
- Kohana 3.0 Beginner's Guide
- 計算機(jī)應(yīng)用基礎(chǔ)