pdf 深入理解kotlin协程_深入理解Kotlin协程

(1)作者是腾讯的不错工程师,是Kotlin领域的先驱者、知名布道师、Kotlin领域的网红级专家(2)本书从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架、应用案例等8个维度对Kotlin协程进行了全面讲解

这是一部从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架、应用案例等多个维度全面讲解Kotlin协程的专著,它同时提供了多语言视角,亦可通过本书了解其他语言的协程。

本书作者是腾讯的的不错工程师,是靠前Kotlin领域的先驱者和布道者,不仅在工程实践领域积累了丰富的经验,而且在Kotlin开发者社群里有广泛的影响力和号召力。

全书共9章:

章从协程的核心应用场景——异步程序设计的思路和关键问题切入,引出Kotlin协程的概念;

第2章首先介绍了协程的概念、分类,然后讲解了Python、Lua、Go等不同语言的协程实现和对比;

第3、4章以Kotlin标准库的协程API为核心,讲解了简单协程的使用方法和运行机制,以及通过简单协程设计和实现复合协程的思路和方法;

第5、6章以Kotlin的官方协程框架为模板,通过逐步实现其中的核心功能,分析了其中的实现细节和复合协程的运行机制,并对框架的使用做了深入探讨;

第7、8章讲解了协程在Android应用开发和Web服务开发中的应用场景、面临的挑战,以及解决各种常见问题的方法和思路;

第9章探讨了JavaScript和Native等非JVM平台对协程的支持情况,以及协程在这些平台上的应用。

英文书名:Understanding Kotlin Coroutine(1)腾讯不错工程师、Kotlin布道师、Kotlin中文社区负责人撰写(2)从工作机制、实现原理、应用场景、使用方法、实践技巧、标准库、框架等维度全面剖析协程,提供多种语言视角和丰富案例

前言

章 异步程序设计介绍

1.1 异步的概念

1.1.1 程序的执行

1.1.2 异步与回调

1.1.3 回调地狱

1.2 异步程序设计的关键问题

1.2.1 结果传递

1.2.2 异常处理

1.2.3 取消响应

1.2.4 复杂分支

1.3 常见异步程序设计思路

1.3.1 Future

1.3.2 CompletableFuture

1.3.3 Promise与async/await

1.3.4 响应式编程

1.3.5 Kotlin协程

1.4 本章小结

第2章 协程的基本概念

2.1 协程究竟是什么

2.2 协程的分类

2.2.1 按调用栈分类

2.2.2 按调度方式分类

2.3 协程的实现举例

2.3.1 Python的Generator

2.3.2 Lua标准库的协程实现

2.3.3 Go的go routine

2.4 本章小结

第3章 Kotlin协程的基础设施

3.1 协程的构造

3.1.1 协程的创建

3.1.2 协程的启动

3.1.3 协程体的Receiver

3.1.4 可挂起的main函数

3.2 函数的挂起

3.2.1 挂起函数

3.2.2 挂起点

3.2.3 CPS变换

3.3 协程的上下文

3.3.1 协程上下文的集合特征

3.3.2 协程上下文元素的实现

3.3.3 协程上下文的使用

3.4 协程的拦截器

3.4.1 拦截的位置

3.4.2 拦截器的使用

3.4.3 拦截器的执行细节

3.5 Kotlin协程所属的类别

3.5.1 调用栈的广义和狭义

3.5.2 调度关系的对立与统一

3.6 本章小结

第4章 Kotlin协程的拓展实践

4.1 序列生成器

4.1.1 仿Python的Generator实现

4.1.2 标准库的序列生成器介绍

4.2 Promise模型

4.2.1 async/await与suspend的设计对比

4.2.2 仿JavaScript的async/await实现

4.3 Lua风格的协程API

4.3.1 非对称API实现

4.3.2 对称API实现

4.4 再谈协程的概念

4.4.1 简单协程与复合协程

4.4.2 复合协程的实现模式

4.5 本章小结

第5章 Kotlin协程框架开发初探

5.1 开胃菜:实现一个delay函数

5.2 协程的描述

5.2.1 协程的描述类

5.2.2 协程的状态

5.2.3 支持回调的状态

5.2.4 协程的初步实现

5.3 协程的创建

5.3.1 无返回值的launch

5.3.2 实现invokeOnCompletion

5.3.3 实现join

5.3.4 有返回值的async

5.4 协程的调度

5.4.1 协程的执行调度

5.4.2 协程的调度位置

5.4.3 协程的调度器设计

5.4.4 基于线程池的调度器

5.4.5 基于UI事件循环的调度器

5.4.6 为协程添加默认调度器

5.5 协程的取消

5.5.1 完善协程的取消逻辑

5.5.2 支持取消的挂起函数

5.5.3 CancellableContinuation的实现

5.5.4 改造挂起函数

5.6 协程的异常处理

5.6.1 定义异常处理器

5.6.2 处理协程的未捕获异常

5.6.3 区别对待取消异常

5.6.4 异常处理器的运用

5.7 协程的作用域

5.7.1 作用域的概念

5.7.2 作用域的声明

5.7.3 建立父子关系

5.7.4 很好作用域

5.7.5 协同作用域

5.7.6 suspend fun main的作用域

5.7.7 实现异常的传播

5.7.8 主从作用域

5.7.9 完整的异常处理流程

5.7.10 父协程等待子协程完成

5.8 本章小结

第6章 Kotlin协程的官方框架

6.1 协程框架概述

6.1.1 框架的构成

6.1.2 协程的启动模式

6.1.3 协程的调度器

6.1.4 协程的全局异常处理器

6.1.5 协程的取消检查

6.1.6 协程的超时取消

6.1.7 禁止取消

6.2 热数据通道Channel

6.2.1 认识Channel

6.2.2 Channel的容量

6.2.3 迭代Channel

6.2.4 produce和actor

6.2.5 Channel的关闭

6.2.6 BroadcastChannel

6.2.7 Channel版本的序列生成器

6.2.8 Channel的内部结构

6.3 冷数据流Flow

6.3.1 认识Flow

6.3.2 对比RxJava的线程切换

6.3.3 冷数据流

6.3.4 异常处理

6.3.5 末端操作符

6.3.6 分离Flow的消费和触发

6.3.7 Flow的取消

6.3.8 其他Flow的创建方式

6.3.9 Flow的背压

6.3.10 Flow的变换

6.4 多路复用select

6.4.1 复用多个await

6.4.2 复用多个Channel

6.4.3 SelectClause

6.4.4 使用Flow实现多路复用

6.5 并发安全

6.5.1 不安全的并发访问

6.5.2 协程的并发工具

6.5.3 避免访问外部可变状态

6.6 本章小结

第7章 Kotlin协程在Android上的应用

7.1 Android上的异步问题

7.1.1 基于UI的异步问题分析

7.1.2 “鸡肋”的AsyncTask

7.1.3 “烫手”的回调

7.1.4 “救世”的RxJava

7.2 协程对UI的支持

7.2.1 UI调度器

7.2.2 协程版AutoDispose


版权声明:本文为weixin_39901571原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。