官术网_书友最值得收藏!

前言

隨著現(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多線程編程鏈接地址”文檔。

主站蜘蛛池模板: 嘉义市| 佛山市| 新兴县| 曲麻莱县| 玛多县| 大渡口区| 内黄县| 库伦旗| 南充市| 安平县| 清远市| 额敏县| 双鸭山市| 上思县| 松桃| 穆棱市| 洪江市| 景泰县| 梨树县| 穆棱市| 铅山县| 汨罗市| 贡觉县| 绥棱县| 和静县| 茂名市| 星子县| 乌拉特前旗| 成武县| 江阴市| 潞城市| 吉隆县| 鸡东县| 叙永县| 泰兴市| 额敏县| 高要市| 博野县| 绍兴县| 皋兰县| 吉林市|