作者:翟陆续(加多),某大型互联网公司资深开发工程师,并发编程网编辑;热衷并发编程,微服务架构设计,中间件基础设施,著作《深度剖析Apache Dubbo技术内幕》、《Java并发编程之美》、《Java异步编程实战》 ,微信公众号:技术原始积累。
异步编程是可以让程序并行运行的一种手段,其可以让程序中的一个工作单元与主应用程序线程分开独立运行,使用它有许多好处,例如可以提高应用程序的性能和响应能力。
虽然Java中不同技术域提供了相应的异步编程技术,但是对异步编程技术的描述散落到了不同技术域的技术文档中,并没有一个统一的地方对这些技术进行梳理归纳。另外这些技术之间是什么关系,各自的出现都是为了解决什么问题,我们也很难找到资料来解释。
本书的出现则是为了打破这种局面,本书旨在把Java中相关的异步编程技术进行归纳分类总结,然后呈现给大家,让大家可以有一个统一的地方来查看与探究。
本书涵盖了Java中常见的异步编程场景,这包含单JVM内的异步编程、以及跨主机通过网络通讯的远程过程调用的异步调用与异步处理、以及Web请求的异步处理等等。
本书在讲解Java中每种异步编程技术时都附有案例,以便理论与实践进行结合。
本书在讲解每种异步编程技术时大多都会对其实现原理进行讲解,以便让读者知其然也知其所以然。
本书对最近比较火的反应式编程以及WebFlux的使用与原理解析有一定深入的探索。
本书适用于有一定Java编程基础,并对Java并发编程、Java异步编程、反应式编程感兴趣的读者。
对于初学者,建议按照本书编写的章节顺序进行学习,因为本书是按照从简到难的顺序编写的,并且每章都有一些代码示例让大家可以动手实践,以便加深理解。如何你对Java并发编程与异步编程有一定的基础,那么你可以直接从目录查看感兴趣的章节进行学习。本书总共分为9个章节,内容如下:
-
第一章主要讲解异步编程的概念和作用,以及在日常开发中都有哪些异步编程的场景;
-
第二章则讲解最基础的显示使用线程和线程池来实现异步编程,以及其存在的缺点;
-
第三章内容比较丰富,主要讲解JDK中的各种Future,包含如何使用Future实现异步编程,以及其内部实现原理,最后讲解了如何结合JDK8 Stream 和Future实现异步编程;
-
第四章讲解Spring框架中提供的异步执行能力,包含Spring中如何对TaskExecutor进行的抽象,以及如何使用注解@Async实现异步编程,以及其内部实现原理;
-
第五章讲解比较火的反应式编程相关,包含什么是反应式编程,以及如何使用反应式编程规范的实现库RxJava和Reactor库实现异步编程;
-
第六章讲解Web Servlet的异步非阻塞处理,这包含Servlet3.0规范如何提供异步处理能力的,以及Servlet3.1规范如何解决IO阻塞问题的,以及Spring MVC中如何使用异步处理能力;
-
第七章讲解与Servlet技术栈并行存在的有Spring5.0提出来的Spring WebFlux的异步非阻塞处理,包含Spring WebFlux的由来、Spring WebFlux的并发模型、两种编程模型,以及如何使用Spring WebFlux来进行服务开发,Spring WebFlux内部实现原理是怎样的;
-
第八章则概要介绍了业界为方便实现异步编程而设计的一些框架和中间件,这包含异步、基于事件驱动的网络编程框架Netty、高性能RPC框架Apache Dubbo、高性能线程间消息传递库Disruptor、异步基于事件驱动的编程框架-Akka、高性能分布式消息平台-Apache RocketMq ;
-
第九章则介绍新兴的Golang语言如何从语言层面提供了强大的异步编程能力。
大家可以到https://github.com/zhailuxu/async-program-demo 下载本书的demo资源,另外由于笔者水平有限,如果您在阅读本书时候发现错误,可以关注微信公众号:技术原始积累 ,留言反馈。