- Java異步編程實戰
- 翟陸續
- 1320字
- 2020-01-15 10:22:28
前言
為何寫作本書
異步編程是可以讓程序并行運行的一種手段,可以讓程序中的一個工作單元與主應用程序線程分開獨立運行,進而提高應用程序的性能和響應能力等。
雖然Java為不同技術域提供了相應的異步編程技術,但是這些異步編程技術被散落到不同技術域的技術文檔中,沒有一個統一的文檔對其進行梳理歸納。另外這些技術之間是什么關系,各自的出現都是為了解決什么問題,我們也很難找到相關資料來解釋。
本書的出現則是為了打破這種局面,旨在對Java中相關的異步編程技術進行歸納總結,為讀者提供一個統一文檔來查閱、參考。
本書特色
本書涵蓋了Java中常見的異步編程場景,包括單JVM內的異步編程、跨主機通過網絡通信的遠程過程調用的異步調用與異步處理,以及Web請求的異步處理等。
本書在講解Java中每種異步編程技術時都附有案例,以理論與實踐相結合的方式,幫助讀者更好地掌握相關內容。
書中在講解每種異步編程技術時多會對其實現原理進行講解,讓讀者知其然也知其所以然。
對于最近比較熱門的反應式編程以及WebFlux的使用與原理解析,本書也有一定的深入探索。
本書讀者對象
本書適用于有一定Java編程基礎,并對Java并發編程、Java異步編程、反應式編程感興趣的讀者。
如何閱讀本書
對于初學者,建議按照本書編寫的章節順序進行學習,因為本書是按照從易到難的順序編寫的,并且每章都有一些代碼示例供大家動手實踐,以便加深理解。如果你對Java并發編程與異步編程有一定的了解,那么可以直接從目錄查看感興趣的章節進行學習。本書共分為9章,內容概述如下:
第1章主要講解異步編程的概念和作用,以及在日常開發中都有哪些異步編程場景。
第2章講解最基礎的顯式使用線程和線程池來實現異步編程的方法,也分析了它們目前存在的缺點。
第3章內容比較豐富,主要講解JDK中的各種Future,包括如何使用Future實現異步編程及其內部實現原理,然后講解了如何結合JDK8 Stream和Future實現異步編程。
第4章講解Spring框架中提供的異步執行能力,包括在Spring中如何對TaskExecutor進行抽象,如何使用注解@Async實現異步編程,以及其內部實現原理。
第5章講解比較熱門的反應式編程相關的內容,包括什么是反應式編程,如何使用反應式編程規范的庫RxJava和Reactor實現異步編程。
第6章講解Web Servlet的異步非阻塞處理,包括Servlet 3.0規范是如何提供異步處理能力的,Servlet 3.1規范是如何解決IO阻塞問題的,以及如何在Spring MVC進行異步處理。
第7章講解與Servlet技術棧并行存在的、由Spring5.0提出的Spring WebFlux異步非阻塞處理,包括Spring WebFlux的由來、Spring WebFlux的并發模型、兩種編程模型,以及如何使用Spring WebFlux來進行服務開發、Spring WebFlux內部的實現原理。
第8章簡要介紹了業界為方便實現異步編程而設計的一些框架和中間件,比如異步基于事件驅動的網絡編程框架Netty,高性能RPC框架Apache Dubbo,高性能線程間消息傳遞庫Disruptor,異步、分布式、基于事件驅動的編程框架Akka和高性能分布式消息框架Apache RocketMQ。
第9章介紹新興的Go語言是如何從語言層面提供強大的異步編程能力的。
資源和勘誤
有需要的讀者可以到https://github.com/zhailuxu/async-program-demo下載本書的demo資源,由于筆者水平有限,如果你在閱讀本書時發現錯誤,可以把錯誤信息提交到華章網站(www.hzbook.com)。
致謝
首先要感謝機械工業出版社楊福川老師的團隊,他們擁有豐富的出版經驗,在本書的命名以及目錄結構調整上,給出了很多中肯的建議;其次要感謝我的家人,感謝他們對我的鼓勵與支持,讓我有充分的時間來寫作本書。
- Designing Machine Learning Systems with Python
- Building a Home Security System with Raspberry Pi
- Vue.js快跑:構建觸手可及的高性能Web應用
- VSTO開發入門教程
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- 愛上micro:bit
- SciPy Recipes
- C++ Fundamentals
- Mastering Elixir
- 零基礎輕松學C++:青少年趣味編程(全彩版)
- Socket.IO Cookbook
- Python Django Web從入門到項目實戰(視頻版)
- 秒懂算法:用常識解讀數據結構與算法
- PhoneGap 3.x Mobile Application Development Hotshot
- Netty 4核心原理與手寫RPC框架實戰