第十三章 《并發(fā)編程》
1.為什么要并發(fā)
- 幫助我們把做什么和何時做分解開
- 并發(fā)總能改進性能
- 編寫并發(fā)程序無需修改設計
- 在采用Web或EJB容器的時候楼咳,理解并發(fā)問題并不重要
2.挑戰(zhàn)
- 并發(fā)會引起數(shù)據(jù)安全性問題
3.并發(fā)防御原則
- 單一權責原則:并發(fā)相關代碼有子的開發(fā),修改和調(diào)優(yōu)生命周期,開發(fā)相關代碼有自己要對付的挑戰(zhàn)碳默,和非并發(fā)相關代碼不同
- 限制數(shù)據(jù)作用域
- 會用數(shù)據(jù)副本:有額外的開銷
- 線程應盡可能獨立
4.了解java庫
- 使用類庫提供的線程安全群集
- 使用executor框架執(zhí)行無關任務
- 盡可能使用非鎖定解決方案
- 有幾個類并非線程安全
5.了解執(zhí)行模型
- 生產(chǎn)者-消費者模式
- 讀者-作者模型
- 宴席哲學家
6.警惕同步方法之間的依賴
7.保持同步區(qū)域微小
8.很難編寫正確的關閉代碼
9.測試線程代碼
- 將偽失敗看作可能的線程問題
- 先使非線程代碼可工作
- 編寫可插拔的線程代碼
- 編寫可調(diào)整的線程代碼
- 運行多于處理器數(shù)量的線程
- 在不同平臺運行
- 裝置試錯代碼
- 硬編碼
- 自動化