Scala并发编程 第2版

副标题:无

作   者:(瑞士) 亚历山大·普罗科佩茨(Aleksandar Prokopec)

分类号:

ISBN:9787115558343

微信扫一扫,移动浏览光盘

简介

本书是一本关于并发编程技术的教程,书中详细介绍了并发编程中的主要概念和基本数据结构,包括传统并发模型、基于Future 和Promise的异步编程、数据并行容器、基于响应式扩展的并发编程、软件事务性内存、角色模型、并发编程实践和反应器编程模型等。本书基于Scala语言编写,实例丰富,可操作性很强。本书面向的用户群体以Scala用户为主,因为书中所有的示例都是基于Scala代码的。但其他语言用户也可以从中获益良多,因为书中介绍的并发编程概念是普遍适用的,并不局限于特定编程语言,只不过Scala比较适用于并发编程而已。

目录


第 1章 概述 1

1.1 并发编程 2

1.1.1 传统并发计算概述 2

1.1.2 现代并发编程范式 3

1.2 Scala的优势 4

1.3 准备工作 5

1.3.1 执行一个Scala程序 5

1.3.2 初识Scala 6

1.4 小结 10

1.5 练习 11



第 2章 JVM和JMM上的并发性 13

2.1 进程和线程 14

2.1.1 线程的创建和启动 16

2.1.2 原子执行 20

2.1.3 重排序 24

2.2 监控器和同步 26

2.2.1 死锁 28

2.2.2 保护块 30

2.2.3 线程中断和平滑关闭 34

2.3 易失变量 35

2.4 JMM 37

2.5 小结 40

2.6 练习 41



第3章 并发编程的传统构造模块 45

3.1 Executor和ExecutionContext对象 46

3.2 原子性原语 49

3.2.1 原子性变量 49

3.2.2 无锁编程 52

3.2.3 锁的实现 54

3.2.4 ABA问题 56

3.3 懒值 58

3.4 并发容器 62

3.4.1 并发队列 64

3.4.2 并发集合和映射 66

3.4.3 并发遍历 71

3.5 定制的并发数据结构 73

3.5.1 实现一个无锁的并发池 74

3.5.2 进程的创建和处理 78

3.6 小结 79

3.7 练习 80



第4章 基于Future和Promise的异步编程 82

4.1 Future 83

4.1.1 启动Future计算 84

4.1.2 Future回调 86

4.1.3 Future和异常 88

4.1.4 使用Try类型 89

4.1.5 致命异常 90

4.1.6 Future上的函数式组合 91

4.2 Promise 98

4.2.1 包装基于回调的API 100

4.2.2 扩展Future API 102

4.2.3 异步计算的取消 103

4.3 Future和阻塞 106

4.3.1 等待Future完成 106

4.3.2 在异步计算内部阻塞 107

4.4 Scala的Async库 108

4.5 其他Future框架 110

4.6 小结 112

4.7 练习 112



第5章 数据并行容器 116

5.1 Scala容器概述 117

5.2 使用并行容器 117

5.2.1 并行容器的类继承谱系 121

5.2.2 配置并行层次 122

5.2.3 测量JVM上的性能 123

5.3 并行容器的缺点 125

5.3.1 不可并行容器 125

5.3.2 不可并行操作 126

5.3.3 并行操作中的副作用 128

5.3.4 非确定性的并行操作 129

5.3.5 可交换和可结合的操作 131

5.4 将并行容器和并发容器结合起来 132

5.5 实现定制的并行容器 134

5.5.1 分裂器 135

5.5.2 组合器 138

5.6 小结 141

5.7 练习 142



第6章 基于响应式扩展的并发编程 143

6.1 创建Observable对象 144

6.1.1 Observable对象和异常 146

6.1.2 Observable规约 147

6.1.3 定制Observable对象 149

6.1.4 由Future对象创建Observable对象 150

6.1.5 订阅 151

6.2 Observable对象的组合 154

6.2.1 嵌套Observable对象 155

6.2.2 Observable对象的错误处理 160

6.3 Rx调度器 163

6.4 Subject和自顶向下响应式编程 169

6.5 小结 173

6.6 练习 174



第7章 软件事务性内存 176

7.1 原子性变量的问题 177

7.2 使用STM 180

7.2.1 事务性引用 182

7.2.2 使用atomic语句 183

7.3 事务的组合 185

7.3.1 事务间的交互和副作用 185

7.3.2 单操作事务 189

7.3.3 嵌套的事务 190

7.3.4 事务和异常 193

7.4 事务的重试 197

7.5 事务性容器 202

7.5.1 事务局部变量 202

7.5.2 事务性数组 203

7.5.3 事务性映射 205

7.6 小结 206

7.7 练习 207



第8章 角色模型 210

8.1 使用角色模型 211

8.1.1 创建角色系统和角色实例 213

8.1.2 未处理消息的管理 216

8.1.3 角色行为和状态 217

8.1.4 Akka角色的层次关系 221

8.1.5 角色的查找 224

8.1.6 角色的生命周期 226

8.2 角色之间的通信 230

8.2.1 ask模式 231

8.2.2 转发模式 234

8.2.3 角色终止 235

8.3 角色的监管 237

8.4 远程角色 242

8.5 小结 246

8.6 练习 246



第9章 并发编程实践 248

9.1 选择并发性编程的正确工具 248

9.2 将所有工具组合起来——编写一个远程文件浏览器 252

9.2.1 文件系统建模 253

9.2.2 服务器接口 256

9.2.3 客户端API 258

9.2.4 客户端程序的用户界面 261

9.2.5 实现客户端逻辑 265

9.2.6 改进远程文件浏览器 270

9.3 调试并发性程序 271

9.3.1 死锁和没有进度 272

9.3.2 程序错误输出的调试 276

9.3.3 性能调优 280

9.4 小结 286

9.5 练习 286



第 10章 反应器编程模型 289

10.1 对反应器的需求 290

10.2 开始使用Reactor 291

10.3 Hello World程序 291

10.4 事件流 293

10.4.1 事件流的生命周期 294

10.4.2 事件流的函数式组合 295

10.5 反应器 297

10.5.1 反应器的定义和配置 299

10.5.2 使用通道 300

10.6 调度器 302

10.7 反应器生命周期 304

10.8 反应器系统服务 305

10.8.1 日志服务 306

10.8.2 时钟服务 306

10.8.3 Channels服务 307

10.8.4 定制服务 309

10.9 协议 310

10.9.1 定制一个服务器—客户端协议 311

10.9.2 标准服务器—客户端协议 313

10.9.3 路由协议 316

10.9.4 两路协议 318

10.10 小结 321

10.11 练习 321


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Scala并发编程 第2版
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon