内容简介
第1章 绪论
1.1 概述
1.2 概念和术语
1.2.1 并发与并行
1.2.2 串行执行和顺序执行
1.2.3 超线程
1.2.4 加速比
1.3 Java并发方面的特性
1.4 并发卐并行程序设计的方法
1.4.1 分治方法
1.4.2 流水线
1.4.3 消息传递
1.5 并发程序的评判标准
1.6 Java内存模型
1.7 程序的运行说明
第2章 线程
2.1 进程与线程
2.2 线程的创建
2.2.1 继承Thread类
2.2.2 实现Runnable接口
2.2.3 两种方法的比较
2.2.4 相关说明
2.3 线程的属性
2.3.1 线程标识符
2.3.2 线程名
2.3.3 线程状态
2.3.4 线程的优先级和调度
2.3.5 守护线程
2.4 线程管理
2.4.1 join()方法
2.4.2 sleep()方法
2.4.3 yield()方法
2.4.4 interrupt()方法
2.4.5 其他方法
2.5 线程分组
2.6 线程数目的确定
2.7 线程本地化
2.8 带返回值的线程
2.8.1 Callable接口
2.8.2 Future接口
2.8.3 Callable与Runnable的比较
2.9 案例分析
小结
习题
第3章 线程同步控制
3.1 为什么要使用同步控制
3.2 基本概念
3.2.1 数据竞争
3.2.2 临界区
3.2.3 监视器
3.2.4 阻塞和非阻塞
3.2.5 线程安全与线程不安全
3.3 锁
3.3.1 同步锁
3.3.2 可重入锁
3.3.3 读写锁
3.3.4 邮戳锁
3.3.5 几种锁机制的比较
3.3.6 锁的不足之处
3.3.7 减少锁竞争的方法
3.3.8 死锁和活锁
3.4 volatile变量
3.5 原子操作
3.5.1 基本类型的原子类
3.5.2 一般引用类型的原子类
3.5.3 ABA问题
3.5.4 扩展的原子引用类型
3.5.5 原子操作数组类
小结
习题
第4章 线程间通信
4.1 等待集合
4.2 wait()巭notify()巭notifyAll()方法
4.2.1 wait()方法
4.2.2 notify()方法
4.2.3 notifyAll()方法
4.2.4 实例
4.3 条件变量
4.3.1 await()方法
4.3.2 signal()方法
4.3.3 signalAll()方法
4.3.4 实例
习题
第5章 线程同步障栅
5.1 障栅
5.2 倒计时门闩
5.3 信号量
5.4 同步队列
5.5 交换器
5.6 阶段化处理
习题
第6章 线程执行器
6.1 线程池
6.1.1 Executor接口
6.1.2 ExecutorService接口
6.1.3 ThreadPoolExecutor类
6.1.4 工厂类Executors
6.1.5 使用线程执行器处理没有返回值的线程
6.2 固定数目的线程执行器
6.3 使用线程执行器处理有返回值的线程
6.4 延迟执行、周期性执行的执行器
6.4.1 ScheduledExecutorService接口
6.4.2 ScheduledFuture接口
6.4.3 举例
6.5 取消任务的执行
6.6 任务装载和结果处理的分离
6.7 管理被拒绝的任务
第7章 Fork巭Join框架
7.1 概述
7.2 相关知识
7.2.1 负载均衡
7.2.2 分治方法
7.2.3 工作窃取算法
7.3 Fork巭Join框架的编程模式
7.4 ForkJoinPool类
7.4.1 ForkJoinPool的创建
7.4.2 ForkJoinPool的使用
7.5 Fork巭Join框架中的任务
7.5.1 任务的创建
7.5.2 任务的运行方式
7.5.3 任务的取消
7.6 Fork巭Join框架的限制
7.7 几种线程机制的比较
习题
第8章 流处理
8.1 Lambda表达式
8.1.1 Lambda表达式的定义
8.1.2 Lambda表达式的使用
8.2 函数式接口Predicate
8.3 流
8.3.1 流简介
8.3.2 创建流
8.3.3 流的操作
第9章 自定义并发类
9.1 自定义线程工厂
9.2 自定义线程池
9.3 在执行器中使用自定义的线程工厂
9.4 自定义周期性任务
9.5 自定义与Fork巭Join框架相关的并发类
9.5.1 ForkJoinWorkerThread类
9.5.2 ForkJoinPool.ForkJoinWorkerThreadFactory接口
9.5.3 自定义Fork巭Join框架中的线程
9.5.4 自定义任务
9.6 自定义同步类
9.6.1 自定义锁
9.6.2 自定义原子操作
习题
第10章 线程安全的集合
10.1 线程安全的双端队列
10.2 线程安全的哈希表
10.3 线程安全的跳表
10.4 随机数产生
10.5 并行数组
第11章 多线程程序的性能和测试
11.1 性能
11.2 可伸缩性
11.3 多线程程序的测试
第12章 面向切面技术在并发编程中的应用
12.1 相关知识
12.1.1 面向切面编程
12.1.2 Java注释接口
12.2 类方法的并发执行
12.2.1 问题的提出
12.2.2 并行库
12.2.3 基于面向方面技术的并行库易用性优化
12.2.4 实验
12.2.5 小结
12.3 实现被标记的类方法的并发执行
12.4 使用面向切面技术分离并发关注点
12.4.1 问题演示
12.4.2 重构框架
12.4.3 实验评估
习题