作品简介

本书深入浅出地介绍了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 域和方法的标注
  • 参考文献
展开全部