¥25.00
作品简介
本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
本书适合Java程序开发人员阅读。
本书作者都是Java Community Process JSR 166专家组(并发工具)的主要成员,并在其他很多JCP专家组里任职。Brian Goetz有20多年的软件咨询行业经验,并著有至少75篇关于Java开发的文章。Tim Peierls是“现代多处理器”的典范,他在BoxPop.biz、唱片艺术和戏剧表演方面也颇有研究。Joseph Bowbeer是一个Java ME专家,他对并发编程的兴趣始于Apollo计算机时代。David Holmes是《The Java Programming Language》一书的合著者,任职于Sun公司。Joshua Bloch是Google公司的首席Java架构师,《Effective Java》一书的作者,并参与著作了《Java Puzzlers》。Doug Lea是《Concurrent Programming》一书的作者,纽约州立大学Oswego分校的计算机科学教授。
作品目录
对本书的赞誉
译者序
前言
如何使用本书
代码示例
致谢
第1章 简介
1.1 并发简史
1.2 线程的优势
1.2.1 发挥多处理器的强大能力
1.2.2 建模的简单性
1.2.3 异步事件的简化处理
1.2.4 响应更灵敏的用户界面
1.3 线程带来的风险
1.3.1 安全性问题
1.3.2 活跃性问题
1.3.3 性能问题
1.4 线程无处不在
第一部分 基础知识
第2章 线程安全性
2.1 什么是线程安全性
2.2 原子性
2.3 加锁机制
2.4 用锁来保护状态
2.5 活跃性与性能
第3章 对象的共享
3.1 可见性
3.2 发布与逸出
3.3 线程封闭
3.4 不变性
3.5 安全发布
第4章 对象的组合
4.1 设计线程安全的类
4.2 实例封闭
4.3 线程安全性的委托
4.4 在现有的线程安全类中添加功能
4.5 将同步策略文档化
第5章 基础构建模块
5.1 同步容器类
5.2 并发容器
5.3 阻塞队列和生产者-消费者模式
5.4 阻塞方法与中断方法
5.5 同步工具类
5.6 构建高效且可伸缩的结果缓存
第二部分 结构化并发应用程序
第6章 任务执行
6.1 在线程中执行任务
6.2 Executor框架
6.3 找出可利用的并行性
第7章 取消与关闭
7.1 任务取消
7.2 停止基于线程的服务
7.3 处理非正常的线程终止
7.4 JVM关闭
第8章 线程池的使用
8.1 在任务与执行策略之间的隐性耦合
8.2 设置线程池的大小
8.3 配置ThreadPoolExecutor
8.4 扩展ThreadPoolExecutor
8.5 递归算法的并行化
第9章 图形用户界面应用程序
9.1 为什么GUI是单线程的
9.2 短时间的GUI任务
9.3 长时间的GUI任务
9.4 共享数据模型
9.5 其他形式的单线程子系统
第三部分 活跃性、性能与测试
第10章 避免活跃性危险
10.1 死锁
10.2 死锁的避免与诊断
10.3 其他活跃性危险
第11章 性能与可伸缩性
11.1 对性能的思考
11.2 Amdahl定律
11.3 线程引入的开销
11.4 减少锁的竞争
11.5 示例:比较Map的性能
11.6 减少上下文切换的开销
第12章 并发程序的测试
12.1 正确性测试
12.2 性能测试
12.3 避免性能测试的陷阱
12.4 其他的测试方法
第四部分 高级主题
第13章 显式锁
13.1 Lock与ReentrantLock
13.2 性能考虑因素
13.3 公平性
13.4 在synchronized和ReentrantLock之间进行选择
13.5 读-写锁
第14章 构建自定义的同步工具
14.1 状态依赖性的管理
14.2 使用条件队列
14.3 显式的Condition对象
14.4 Synchronizer剖析
14.5 AbstractQueuedSynchronizer
14.6 java.util.concurrent同步器类中的AQS
第15章 原子变量与非阻塞同步机制
15.1 锁的劣势
15.2 硬件对并发的支持
15.3 原子变量类
15.4 非阻塞算法
第16章 Java内存模型
16.1 什么是内存模型,为什么需要它
16.2 发布
16.3 初始化过程中的安全性
附录A 并发性标注
A.1 类的标注
A.2 域和方法的标注
参考文献
载入中