书籍详情
并发模式与应用实践
作者:(印度)阿图尔·S.科德
出版社:机械工业出版社
出版时间:2019-05-01
ISBN:9787111625063
定价:¥79.00
购买这本书可以去
内容简介
《并发模式与应用实践》详细阐释如何使用多线程、同步和函数式编程模式构建可扩展的应用程序,不仅涵盖基本的并发概念、常用的多线程、同步和函数式编程模式等技术,还深入探讨了不同的并发模型和并行算法及其在不同场景中的应用,此外提供了丰富的代码示例,可以帮助你快速掌握并有效利用并发模式以解决实际的开发问题。全书共7章,第1章概述并发编程,并介绍UNIX进程以及并发模式的管道和过滤器;第2章介绍一些关键的基本概念和Java内存模型的本质,你将了解共享状态模型中出现的竞争条件和问题;第3章介绍其他同步模式,涉及有界缓冲区、读写锁、计数信号量、倒计时锁、循环屏障、future任务等;第4章讨论线程池,涉及fork-join API、主动对象设计模式等主题;第5章介绍提高数据结构并发的各种策略,涉及无锁堆栈和队列、并发哈希算法、锁条纹设计模式等;第6章讨论函数式并发模式,并详细介绍future模式;第7章讨论actor模式和功能,涉及状态封装、become模式、基本的actor通信模式等。
作者简介
阿图尔·S. 科德(Atul S. Khot)用C和C++编写过软件程序,作为一名Linux迷和擅长使用命令行的程序员,他精通多种编程语言。在大量使用Java编程并涉猎多种语言之后,现在他越来越喜欢Scala、Clojure和Erlang。他经常作为演讲嘉宾参加软件会议,曾担任Dobb博士产品奖评委。他是《Scala Functional Programming Patterns》和《Learning Functional Data Structures and Algorithms》的作者。
目录
译者序
前言
作者/评阅者简介
第1章 并发简介1
1.1 并发轻而易举2
1.1.1 推动并发3
1.1.2 分时6
1.1.3 两种并发编程模型7
1.2 消息传递模型8
1.2.1 协调和通信10
1.2.2 流控制12
1.2.3 分治策略14
1.2.4 进程状态的概念15
1.3 共享内存和共享状态模型16
1.3.1 线程交错—同步的需要18
1.3.2 竞争条件和海森堡bug20
1.3.3 正确的内存可见性和happens-before原则21
1.3.4 共享、阻塞和公平22
1.3.5 异步与同步执行24
1.3.6 Java的非阻塞I/O25
1.4 模式和范式26
1.4.1 事件驱动的架构28
1.4.2 响应式编程29
1.4.3 actor范式31
1.4.4 消息代理32
1.4.5 软件事务性内存33
1.4.6 并行集合34
1.5 本章小结35
第2章 并发模式初探37
2.1 线程及其上下文38
2.2 竞争条件40
2.2.1 监视器模式44
2.2.2 线程安全性、正确性和不变性45
2.2.3 双重检查锁定48
2.2.4 显式锁定52
2.2.5 生产者/消费者模式60
2.2.6 比较和交换66
2.3 本章小结68
第3章 更多的线程模式70
3.1 有界缓冲区72
3.1.1 策略模式—客户端轮询74
3.1.2 接管轮询和睡眠的策略75
3.1.3 使用条件变量的策略77
3.2 读写锁78
3.2.1 易读的RW锁80
3.2.2 公平锁84
3.3 计数信号量86
3.4 我们自己的重入锁89
3.5 倒计时锁存器91
3.6 循环屏障95
3.7 future任务97
3.8 本章小结100
第4章 线程池101
4.1 线程池102
4.1.1 命令设计模式104
4.1.2 单词统计105
4.1.3 单词统计的另一个版本107
4.1.4 阻塞队列107
4.1.5 线程中断语义111
4.2 fork-join池111
4.2.1 Egrep—简易版112
4.2.2 为什么要使用递归任务113
4.2.3 任务并行性116
4.2.4 使用fork-join API实现快速排序117
4.2.5 map-reduce技术124
4.3 线程的工作窃取算法125
4.4 主动对象128
4.4.1 隐藏和适应129
4.4.2 使用代理129
4.5 本章小结132
第5章 提升并发性133
5.1 无锁堆栈134
5.1.1 原子引用134
5.1.2 堆栈的实现135
5.2 无锁的FIFO队列137
5.2.1 流程如何运作140
5.2.2 无锁队列141
5.2.3 ABA问题147
5.3 并发的哈希算法152
5.3.1 add(v)方法153
5.3.2 contains(v)方法156
5.4 大锁的方法157
5.5 锁条纹设计模式159
5.6 本章小结162
第6章 函数式并发模式163
6.1 不变性164
6.1.1 不可修改的包装器165
6.1.2 持久数据结构167
6.1.3 递归和不变性169
6.2 future模式170
6.2.1 apply方法171
6.2.2 future—线程映射173
6.2.3 future模式是异步的174
6.2.4 糟糕的阻塞177
6.2.5 函数组合179
6.3 本章小结182
第7章 actor模式183
7.1 消息驱动的并发183
7.1.1 什么是actor185
7.1.2 状态封装189
7.1.3 并行性在哪里190
7.1.4 未处理的消息192
7.1.5 become模式193
7.1.6 让它崩溃并恢复197
7.1.7 actor通信—ask模式199
7.1.8 actor通信—tell模式204
7.1.9 pipeTo模式205
7.2 本章小结207
前言
作者/评阅者简介
第1章 并发简介1
1.1 并发轻而易举2
1.1.1 推动并发3
1.1.2 分时6
1.1.3 两种并发编程模型7
1.2 消息传递模型8
1.2.1 协调和通信10
1.2.2 流控制12
1.2.3 分治策略14
1.2.4 进程状态的概念15
1.3 共享内存和共享状态模型16
1.3.1 线程交错—同步的需要18
1.3.2 竞争条件和海森堡bug20
1.3.3 正确的内存可见性和happens-before原则21
1.3.4 共享、阻塞和公平22
1.3.5 异步与同步执行24
1.3.6 Java的非阻塞I/O25
1.4 模式和范式26
1.4.1 事件驱动的架构28
1.4.2 响应式编程29
1.4.3 actor范式31
1.4.4 消息代理32
1.4.5 软件事务性内存33
1.4.6 并行集合34
1.5 本章小结35
第2章 并发模式初探37
2.1 线程及其上下文38
2.2 竞争条件40
2.2.1 监视器模式44
2.2.2 线程安全性、正确性和不变性45
2.2.3 双重检查锁定48
2.2.4 显式锁定52
2.2.5 生产者/消费者模式60
2.2.6 比较和交换66
2.3 本章小结68
第3章 更多的线程模式70
3.1 有界缓冲区72
3.1.1 策略模式—客户端轮询74
3.1.2 接管轮询和睡眠的策略75
3.1.3 使用条件变量的策略77
3.2 读写锁78
3.2.1 易读的RW锁80
3.2.2 公平锁84
3.3 计数信号量86
3.4 我们自己的重入锁89
3.5 倒计时锁存器91
3.6 循环屏障95
3.7 future任务97
3.8 本章小结100
第4章 线程池101
4.1 线程池102
4.1.1 命令设计模式104
4.1.2 单词统计105
4.1.3 单词统计的另一个版本107
4.1.4 阻塞队列107
4.1.5 线程中断语义111
4.2 fork-join池111
4.2.1 Egrep—简易版112
4.2.2 为什么要使用递归任务113
4.2.3 任务并行性116
4.2.4 使用fork-join API实现快速排序117
4.2.5 map-reduce技术124
4.3 线程的工作窃取算法125
4.4 主动对象128
4.4.1 隐藏和适应129
4.4.2 使用代理129
4.5 本章小结132
第5章 提升并发性133
5.1 无锁堆栈134
5.1.1 原子引用134
5.1.2 堆栈的实现135
5.2 无锁的FIFO队列137
5.2.1 流程如何运作140
5.2.2 无锁队列141
5.2.3 ABA问题147
5.3 并发的哈希算法152
5.3.1 add(v)方法153
5.3.2 contains(v)方法156
5.4 大锁的方法157
5.5 锁条纹设计模式159
5.6 本章小结162
第6章 函数式并发模式163
6.1 不变性164
6.1.1 不可修改的包装器165
6.1.2 持久数据结构167
6.1.3 递归和不变性169
6.2 future模式170
6.2.1 apply方法171
6.2.2 future—线程映射173
6.2.3 future模式是异步的174
6.2.4 糟糕的阻塞177
6.2.5 函数组合179
6.3 本章小结182
第7章 actor模式183
7.1 消息驱动的并发183
7.1.1 什么是actor185
7.1.2 状态封装189
7.1.3 并行性在哪里190
7.1.4 未处理的消息192
7.1.5 become模式193
7.1.6 让它崩溃并恢复197
7.1.7 actor通信—ask模式199
7.1.8 actor通信—tell模式204
7.1.9 pipeTo模式205
7.2 本章小结207
猜您喜欢