關於Java與並行
由於單核CPU的主頻逐步逼近極限,多核CPU架構成了一種必然的技術趨勢,因此多線程並行程序便顯得越來越重要。並行計算的一個重要應用場景就是服務端編程。目前服務端CPU的核心數已經輕松超越10個,而Java顯然已經成為當下最流行的服務端編程語言,且已經更新到JDK 10,因此熟悉和了解基於Java的並行程序開發有著重要的實用價值。
本書的體繫結構
本書立足於實際開發,又不缺乏理論介紹,力求通俗易懂、循序漸進。本書共分為9章。
第1章主要介紹了並行計算中相關的一些基本概念,樹立讀者對並行計算的基本認識,介紹了兩個重要的並行性能評估定律,以及Java內存模型JMM。
第2章介紹了Java並行程序開發的基礎,包括Java中Thread的基本使用方法等,也詳細介紹了並行程序容易引發的一些錯誤,以及容易出現的誤用。
第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.5、JDK 1.6、JDK 1.7、JDK 1.8、JDK 1.9、JDK 1.10分別等同於JDK 5、JDK 6、JDK 7、JDK 8、JDK 9、JDK 10。
? 如無特殊說明,本書的程序、示例均在JDK 1.8以上環境中運行。
相較前一版,本書的主要更新如下。
1. 第3章增加的內容如下。
? 使用JMH進行性能測試。
? CopyOnWriteArrayList ConcurrentLinkedQueue性能測試。
? 使用Guava的RateLimiter限流。
? Guava中對線程池的擴展。
? 介紹JDK中ArrayBlockingQueue的算法。
2. 第5章增加的內容如下。
? Guava對Future模式的支持。
3. 第6章增加的內容如下。
? 支持timeout的CompletableFuture。
? ConcurrentHashMap在新版本JDK中的增強。
? 發布和訂閱模式。
4. 增加第9章,主要介紹Jetty多線程優化。從細節入手分析Jetty在多線程並發方面做出的努力和優化,對實踐應用具有極強的參考價值。
聯繫作者
本書的寫作過程遠比我想像得艱辛,為了讓全書能夠更清楚、更準確地表達和論述,我經歷了很多個不眠之夜,即使現在回想起來,我也忍不住會打個寒戰。由於寫作水平的限制,書中難免會有不妥之處,望讀者諒解。
為此,如果讀者有任何疑問或者建議,非常歡迎大家加入QQ群254693571,一起探討學習中的困難、分享學習經驗,我期待與大家一起交流、共同進步。同時,大家也可以關注我的博客http://www.uucode.net/。歡迎大家去博文視點社區下載本書推薦的參考文獻。
感謝
本書能夠面世,是因為得到了眾人的支持。首先,要感謝我的妻子,她始終不辭辛勞、毫無怨言地對我照顧有加,纔讓我得以騰出大量時間安心工作。其次,要感謝所有編輯為我一次又一次地審稿改錯,批評指正,促進本書逐步完善。最後,感謝我的母親三十年如一日對我的體貼和關心。
葛一鳴