- 實戰Java高并發程序設計(第2版)
- 葛一鳴
- 1863字
- 2019-07-26 15:32:09
前言
關于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/。歡迎大家去博文視點社區下載本書推薦的參考文獻。
感謝
本書能夠面世,是因為得到了眾人的支持。首先,要感謝我的妻子,她始終不辭辛勞、毫無怨言地對我照顧有加,才讓我得以騰出大量時間安心工作。其次,要感謝所有編輯為我一次又一次地審稿改錯,批評指正,促進本書逐步完善。最后,感謝我的母親三十年如一日對我的體貼和關心。
葛一鳴
讀者服務
輕松注冊成為博文視點社區用戶(www.broadview.com.cn),您即可享受以下服務:
● 下載資源:本書如提供示例代碼及資源文件,均可在 下載資源 處下載。
● 提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
● 與作者交流:在頁面下方 讀者評論 處留下您的疑問或觀點,與作者和其他讀者一同學習交流。
頁面入口:http://www.broadview.com.cn/35003
- iOS Game Programming Cookbook
- GeoServer Cookbook
- .NET 4.0面向對象編程漫談:基礎篇
- 深入實踐Spring Boot
- Python數據挖掘與機器學習實戰
- Learning Probabilistic Graphical Models in R
- ASP.NET求職寶典
- Practical GIS
- Selenium WebDriver Practical Guide
- Mastering Drupal 8
- 程序員面試金典(第6版)
- Enterprise Application Architecture with .NET Core
- Visual FoxPro程序設計實驗教程
- 歐姆龍PLC編程指令與梯形圖快速入門
- SAP HANA Starter