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

前言

關于Java與并行

由于單核CPU的主頻逐步逼近極限,多核CPU架構成了一種必然的技術趨勢,因此多線程并行程序便顯得越來越重要。并行計算的一個重要應用場景就是服務端編程。目前服務端CPU的核心數已經輕松超越10個,而Java顯然是當下最流行的服務端編程語言,且已經更新到JDK 14,因此熟悉和了解基于Java的并行程序開發有著重要的實用價值。

本書的體系結構

本書立足于實際開發,但不缺乏理論介紹,力求通俗易懂、循序漸進。本書共分為9章。

第1章主要介紹并行計算中的一些基本概念,讓讀者對并行計算有一個基本認識,其中包括兩個重要的并行性能評估定律,以及Java內存模型JMM。

第2章介紹Java并行程序開發的基礎,包括Java中線程的基本使用方法等,也詳細介紹了并行程序容易引發的一些錯誤,以及容易出現的誤用。

第3章介紹JDK內部對并行程序開發的支持,主要介紹JUC(java.util.concurrent)中一些工具的使用方法、各自的特點及它們的內部實現原理。

第4章介紹在開發過程中可以進行的對鎖的優化,也進一步簡要描述了Java虛擬機層面對并行程序的優化和支持。此外,還花了一定的篇幅介紹無鎖的計算。

第5章介紹并行程序設計中常見的一些設計模式,以及典型的并行算法和使用方法,其中包括重要的Java NIO和AIO的介紹。

第6章介紹Java 8/9/10為并行計算所做的改進,包括并行流、CompletableFuture、StampedLock、LongAdder,以及發布和訂閱模式等。

第7章主要介紹高并發框架Akka的基本使用方法,并使用Akka框架實現了一個簡單的粒子群算法,模擬超高并發的場景。

第8章介紹使用Eclipse進行多線程調試的方法,并演示了通過Eclipse進行多線程調試來重現ArrayList的線程不安全問題。

第9章介紹Jetty,并分析Jetty的關鍵代碼,主要展示它在高并發優化中所做的一些努力,也為讀者學會并深入理解高并發提供一些提示和思考。

本書特色

本書的主要特色如下。

1.結構清晰。本書一共9章,總體上循序漸進、逐步提升。每一章都有鮮明的側重點,有利于讀者快速抓住重點。

2.理論結合實戰。本書注重實戰,書中重要的知識點都安排了代碼實例,從而利于讀者理解,同時對系統的內部實現原理進行了深度剖析。

3.通俗易懂。本書盡量避免采用過于理論化的描述方式,簡單的白話文風格貫穿全書,配圖基本上為手工繪制示意圖,降低了理解難度,并盡量做到讓讀者在閱讀過程中少盲點、無盲點。

適合閱讀人群

雖然本書力求通俗,但是要通讀本書并取得良好的學習效果,仍要求讀者具備基本的Java知識或者一定的編程經驗。因此,本書適合以下讀者。

· 擁有一定開發經驗的Java平臺開發人員(Java、Scala、JRuby等)。

· 軟件設計師、架構師。

· 系統調優人員。

· 有一定的Java編程基礎并希望進一步加深對并行程序的理解的研發人員。

本書的約定和更新

本書在敘述過程中,有如下約定。

· 本書所述的JDK 1.8、JDK 1.9、JDK 1.10分別等同于JDK 8、JDK 9、JDK 10。

· 如無特殊說明,本書的程序、示例均在JDK 1.8以上環境中運行。

相較前一版,本書的主要更新如下。

1.第3章更新的內容如下。

· 更新了“3.1.3 允許多個線程同時訪問:信號量(Semaphore)”。

· 增加了對AbstractQueuedSynchronizer的介紹。

· 增加了對ConcurrentHashMap在JDK 8中實現的介紹。

2.第4章更新的內容如下。

· 更新了“4.1.2 減小鎖粒度”。

· 增加了對ThreadLocalRandmon實現的介紹。

· 更新了“4.4.2 無鎖的線程安全整數:AtomicInteger”中有關原子類實現的介紹。

· 更新了“4.4.3 Java中的指針:Unsafe類”中有關Unsafe類的說明。

3.第5章更新的內容如下。

· 更新了“5.4.4 CPU Cache的優化:解決偽共享問題”中的示例。

4.第6章更新內容如下。

· 更新了“6.7.1 更快的原子類:LongAdder”中有關LongAdder的實現。

感謝

本書能夠面世,是因為得到了眾人的支持。首先,感謝我的妻子,她始終不辭辛勞、毫無怨言地對我照顧有加,這才讓我得以騰出大量時間安心工作。其次,感謝所有編輯為我一次又一次地審稿改錯,批評指正,幫助本書逐步完善。最后,感謝我的母親三十年如一日對我的體貼和關心。

參與本書寫作的還有薛淑英,特此感謝!

葛一鳴

主站蜘蛛池模板: 宿州市| 湟源县| 富裕县| 黑水县| 清流县| 石阡县| 绥化市| 上林县| 柞水县| 洞头县| 大关县| 绥江县| 鄂温| 二连浩特市| 兴海县| 前郭尔| 土默特右旗| 邵东县| 宁乡县| 鄄城县| 沙湾县| 朝阳区| 和政县| 独山县| 乐山市| 樟树市| 茌平县| 聂荣县| 三门县| 山阴县| 刚察县| 天台县| 定西市| 璧山县| 西充县| 长阳| 墨玉县| 涪陵区| 阿合奇县| 交城县| 天津市|