并发
并发的意义
分离 做什么 与 何时做
并发防御原则
- 单一权责
- 限制数据作用域
- 使用数据副本
- 线程应尽可能独立
了解类库的线程安全性
了解执行模型
- 生产者-消费者
- 读者-作者
- 宴席哲学家
警惕同步方法之间的依赖
保持同步区域微小
尽早考虑关闭问题
编写线程测试代码
- 将伪失败看做可能的线程问题
- 先使非线程代码可工作
- 编写可插拔的线程代码
- 编写可调整的线程代码
- 运行多于处理器数量的线程
- 在不同平台上运行
- 装置试错代码
- 硬编码
手工向代码中插入wait()/sleep()/yield()/priority()的调用,以提高线程出现错误的可能性。