- 實戰Java高并發程序設計(第3版)
- 葛一鳴
- 1517字
- 2022-11-11 18:19:35
前言
關于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的實現。
感謝
本書能夠面世,是因為得到了眾人的支持。首先,感謝我的妻子,她始終不辭辛勞、毫無怨言地對我照顧有加,這才讓我得以騰出大量時間安心工作。其次,感謝所有編輯為我一次又一次地審稿改錯,批評指正,幫助本書逐步完善。最后,感謝我的母親三十年如一日對我的體貼和關心。
參與本書寫作的還有薛淑英,特此感謝!
葛一鳴
- Learning Java Functional Programming
- .NET之美:.NET關鍵技術深入解析
- Learning C# by Developing Games with Unity 2020
- The HTML and CSS Workshop
- Cocos2d-x學習筆記:完全掌握Lua API與游戲項目開發 (未來書庫)
- Learning FuelPHP for Effective PHP Development
- ServiceNow:Building Powerful Workflows
- 基于SpringBoot實現:Java分布式中間件開發入門與實戰
- Python 3 數據分析與機器學習實戰
- SQL Server 入門很輕松(微課超值版)
- 多媒體技術及應用
- 嵌入式Linux C語言程序設計基礎教程
- C語言程序設計
- 美麗洞察力:從化妝品行業看顧客需求洞察
- Java程序設計(項目教學版)