第十三章 《并发编程》
1.为什么要并发
- 帮助我们把做什么和何时做分解开
- 并发总能改进性能
- 编写并发程序无需修改设计
- 在采用Web或EJB容器的时候,理解并发问题并不重要
2.挑战
- 并发会引起数据安全性问题
3.并发防御原则
- 单一权责原则:并发相关代码有子的开发,修改和调优生命周期,开发相关代码有自己要对付的挑战,和非并发相关代码不同
- 限制数据作用域
- 会用数据副本:有额外的开销
- 线程应尽可能独立
4.了解java库
- 使用类库提供的线程安全群集
- 使用executor框架执行无关任务
- 尽可能使用非锁定解决方案
- 有几个类并非线程安全
5.了解执行模型
- 生产者-消费者模式
- 读者-作者模型
- 宴席哲学家
6.警惕同步方法之间的依赖
7.保持同步区域微小
8.很难编写正确的关闭代码
9.测试线程代码
- 将伪失败看作可能的线程问题
- 先使非线程代码可工作
- 编写可插拔的线程代码
- 编写可调整的线程代码
- 运行多于处理器数量的线程
- 在不同平台运行
- 装置试错代码
- 硬编码
- 自动化