书籍作者:翟陆续 | ISBN:9787111642992 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7798 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
这是一部全面解析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语言是如何从语言层面提供了强大的异步编程能力的。
本书注重理论与实践相结合,且每个异步技术点都附有代码实例,帮助读者加深理解。
翟陆续(花名:加多)
资深Java技术工程师,就职于淘宝,有多年的Java研发经验,在Java并发编程、异步编程等方面有深入研究和积累。对JUC包源码有深入的理解,熟悉常用开源框架实现原理。
著有畅销书《Java并发编程之美》。
(1)作者是淘宝的资深Java技术专家,在Java异步编程和并发编程领域积累了丰富的经验。
(2)本书得到了周志明、李运华、毗卢、于君泽、方腾飞等Java技术领域的资深专家的一致好评和推荐。
(3)本书从JDK、Spring、Web Servlet、Netty、Dubbo、Go语言等框架和语言的角度全面讲解了异步编程的原理和技巧,以及异步编程各种常见的适用常见。
(4)注重实战,每个技术知识点都配有案例代码。
前言
第1章 认识异步编程1
1.1 异步编程概念与作用1
1.2 异步编程场景2
1.3 总结9
第2章 显式使用线程和线程池实现异步编程10
2.1 显式使用线程实现异步编程10
2.2 显式使用线程池实现异步编程14
2.2.1 如何显式使用线程池实现异步编程14
2.2.2 线程池ThreadPoolExecutor原理剖析17
2.3 总结34
第3章 基于JDK中的Future实现异步编程35
3.1 JDK 中的Future35
3.2 JDK中的FutureTask37
3.2.1 FutureTask 概述37
3.2.2 FutureTask的类图结构41
3.2.3 FutureTask的run() 方法45
3.2.4 FutureTask的get()方法48
3.2.5 FutureTask的cancel(boolean mayInterruptIfRunning)方法50
3.2.6 FutureTask的局限性52
3.3 JDK中的CompletableFuture52
3.3.1 CompletableFuture 概述52
3.3.2 显式设置CompletableFuture结果54
3.3.3 基于CompletableFuture实现异步计算与结果转换56
3.3.4 多个CompletableFuture进行组合运算65
3.3.5 异常处理68
3.3.6 CompletableFuture概要原理70
3.4 JDK8 Stream & CompletableFuture76
3.4.1 JDK8 Stream76
3.4.2 当Stream遇见CompletableFuture79
3.5 总结81
第4章 Spring框架中的异步执行82
4.1 Spring中对TaskExecutor的抽象82
4.2 如何在Spring中使用异步执行84
4.2.1 使用TaskExecutor实现异步执行84
4.2.2 使用注解@Async实现异步执行89
4.3 @Async注解异步执行原理96
4.4 总结109
第5章 基于反应式编程实现异步编程110
5.1 反应式编程概述110
5.2 Reactive Streams规范120
5.3 基于RxJava实现异步编程123
5.4 基于Reactor实现异步编程133
5.5 总结136
第6章 Web Servlet的异步非阻塞处理137
6.1 Servlet概述137
6.2 Servlet 3.0 提供的异步处理能力138
6.3 Servlet 3.1 提供的非阻塞IO能力145
6.4 Spring Web MVC 的异步处理能力153
6.4.1 基于DeferredResult的异步处理154
6.4.2 基于Callable实现异步处理155
6.5 总结157
第7章 Spring WebFlux的异步非阻塞处理158
7.1 Spring WebFlux概述158
7.2 Reactive编程 & Reactor库159
7.3 WebFlux服务器160
7.4 WebFlux的并发模型163
7.5 WebFlux对性能的影响164
7.6 WebFlux的编程模型164
7.6.1 WebFlux注解式编程模型165
7.6.2 WebFlux函数式编程模型168
7.7 WebFlux原理浅尝171
7.7.1 Reactor Netty概述171
7.7.2 WebFlux服务器启动流程173
7.7.3 WebFlux一次服务调用流程182
7.8 WebFlux的适用场景185
7.9 总结186
第8章 高性能异步编程框架和中间件187
8.1 异步、基于事件驱动的网络编程框架—Netty187
8.1.1 Netty概述187
8.1.2 Netty的线程模型190
8.1.3 TCP半包与粘包问题196
8.1.4 基于Netty与CompletableFuture实现RPC异步调用198
8.2 高性能RPC框架—Apache Dubbo209
8.2.1 Apache Dubbo概述209
8.2.2 Dubbo的异步调用210
8.2.3 Dubbo的异步执行214
8.3 高性能线程间消息传递库—Disruptor217
8.3.1 Disruptor概述217
8.3.2 Disruptor的特性详解220
8.3.3 基于Disruptor实现异步编程223
8.4 异步、分布式、基于消息驱动的框架—Akka227
8.4.1 Akka概述227
8.4.2 传统编程模型存在的问题228
8.4.3 Actor模型解决了传统编程模型的问题232
8.4.4 基于Akka实现异步编程237
8.5 高性能分布式消息框架—Apache RocketMQ244
8.5.1 Apache RocketMQ概述244
8.5.2 基于Apache RocketMQ实现系统间异步解耦246
8.6 总结254
第9章 Go语言的异步编程能力255
9.1 Go语言概述255
9.2 Go语言的线程模型256
9.2.1 一对一模型256
9.2.2 多对一模型257
9.2.3 多对多模型258
9.2.4 Go语言的线程模型259
9.3 goroutine与channel261
9.3.1 goroutine261
9.3.2 channel265
9.3.3 构建管道实现异步编程269
9.4 总结273
目前关于异步编程的相关知识都很零散,少有一本综合指南,这本书基本涵盖了并发编程的常用场景,很全面,讲解也很容易理解。
2019-12-24
封面Java这个杯子太经典了,正好最近用到并发编程,作为学习指南还不错。
2019-12-24
目录很明了,可以很方便地找到自己想看的内容,而且实践性很好。
2019-12-24
国内第一本Java异步编程著作,淘宝Java资深研发工程师撰写,
2019-12-23
异步一直不太明白,希望通过这本书能搞清楚一些重要的概念与思想
2019-12-31
这两天正在看《Java并发编程实战》呢,昨天就看到机械工业出版社要出版《Java异步编程实战》了 从上大学的时候开始接触多线程编程,然后当时就在听业界的人说异步编程。 工作了之后,发现异步编程的执行效率是高,但代码写起来很容易陷入回调地狱,大家还是用同步的写法。 然后...
2019-12-31 13:55:06
在最开始学习Java的时候,就只会从上往下一把梭地写代码,代码的编写顺序跟其执行顺序保证完全的一样,直到一堂Java课上面老师提到了一个问题:计算机的CPU就跟一个个小人一样,每个小人都只能在同一时间做一件事情,这时候如果我们的代码里面都是同步地,自上而下地做一件事情...
2019-12-31 10:38:13
## 并发与并行 我们都知道,程序猿是一种逻辑性极强的生物,他们不擅言辞,不擅表达,但是他们能够用一种神秘的语言与机器进行沟通,知道怎么让机器听他们的。机器是线性思维,为了能够更高效的与机器沟通,程序猿主动或被动或潜移默化的转变思维模式,思维逐渐变得线性。最直...
2019-12-31 00:20:56
这个世界的运转就是异步的,因此异步编程变得越来越重要。我们在最开始学习编程的时候都是编写同步的代码,随着学习的深入,为了提高系统性能,就会使用异步编程来处理一些任务,从而提高系统的吞吐率。但是异步编程会产生一些新的问题,比如如何监控异步线程的状态,如何处理...
2019-12-30 20:43:05
当初大学义无反顾走上Java道路,就是觉得Java很有意思,记得刚工作那会,整天比较多的都是写简单的增删改查,在我动力日渐消散的时候,头儿给的很多学习文档我还没看完,头儿又说:“Java光会简单的添删改查什么的不行,要深入了解,多去看看Java高级编程,比起异步编程,高并...
2019-12-30 19:04:08
在大学毕业后的工作期间,从最开始的编写同步代码,到慢慢为了提高系统性能,把一些任务使用异步的方式来处理,从而提高系统的响应时间,那么就会产生一些新的问题,如何监控在异步线程执行的任务的执行状态,是否出现了错误,出现了错误怎么处理,系统创建大量线程又该如何统...
2019-12-30 18:13:12
我是一名程序员,过着996的生活。 但我创造了一个世界,这个世界很忙碌,每天不停地运转,在这个世界里,我是它们的造物者,掌管着所有人的生杀大权。 这个世界由多个部门组成,为了使这个世界有条不紊地运转,我费了很多功夫,还需要定时地检查运转情况,比如谁偷懒了,谁累趴...
2019-12-30 18:01:01
谈到异步编程,首先需要理解,计算机领域中的同步操作(Synchronous)和异步操作(Asynchronous)的含义 同步操作:意味着**事件同时存在,同时发生**,在操作处理期间,发起方需要一直阻塞等到完成,在此期间不能做其他事情 异步操作:意味着**事件不是同时存在**,在操作处理期间...
2019-12-27 20:54:13
相信本书介绍了CompletableFuture,大家就会认识到什么是异步编程。异步编程的好处。 异步编程最大好处就是:高并发,异步处理,速度快,请求量不会一直堆积。避免流量冗余,或者服务宕机的情况。此书很好的介绍了异步编程的实战。结合实际案例来分析异步编程,并且介绍了jdk的...
2020-01-09 14:18:16
Java在Java8之前貌似(因为我也刚学,所以不对还请各位前辈指正)没有真正实现异步编程的方法,当时异步编程会使用回调或者使用其他的框架(如Netty和Guava)来实现。后来Java8借鉴了很多框架的思想,可以借助JDK原生的CompletableFuture来实现异步操作,而且用Lambda表达式来...
2020-01-08 17:24:28