Java 多線程編程實戰指南 (設計模式篇)

黃文海

買這商品的人也買了...

商品描述

隨著CPU 多核時代的到來,多線程編程在充分利用計算資源、提高軟件服務質量方面扮演了越來越重要的角色。而解決多線程編程中頻繁出現的普遍問題可以借鑒設計模式所提供的現成解決方案。然而,多線程編程相關的設計模式書籍多採用C++作為描述語言,且書中所舉的例子多與應用開發人員的實際工作相去甚遠。本書採用Java(JDK1.6)語言和UML 為描述語言,並結合作者多年工作經歷的相關實戰案例,介紹了多線程環境下常用設計模式的來龍去脈:各個設計模式是什麽樣的及其典型的實際應用場景、實際應用時需要註意的事項以及各個模式的可復用代碼實現。

作者簡介

黃文海,2004年開始從事軟件開發工作,近幾年從事軟件項目管理工作。在其工作過程中積累了豐富的技術指導經驗和企業內部培訓經驗。曾在InfoQ中文站和IBM developerWorks上發表過十幾篇技術、項目管理文章。

目錄大綱

第1章Java多線程編程實戰基礎1 

1.1無處不在的線程1 
1.2線程的創建與運行2 
1.3線程的狀態與上下文切換5 
1.4線程的監視7 
1.5原子性、內存可見性和重排序——重新認識synchronized和volatile10 
1.6線程的優勢和風險11 
1.7多線程編程常用術語13 

第2章設計模式簡介17 

2.1設計模式及其作用17 
2.2多線程設計模式簡介20 
2.3設計模式的描述21 

第3章Immutable Object (不可變對象)模式23 

3.1 Immutable Object模式簡介23 
3.2 Immutable Object模式的架構25 
3.3 Immutable Object模式實戰案例27 
3.4 Immutable Object模式的評價與實現考量31 
3.5 Immutable Object模式的可複用實現代碼32 
3.6 Java標準庫實例32 
3.7相關模式34 
3.7.1 Thread Specific Storage模式(第10章)34 
3.7.2 Serial Thread Confinement模式(第11章)34 
3.8參考資源34 

第4章Guarded Suspension(保護性暫掛)模式35 

4.1 Guarded Suspension模式簡介35 
4.2 Guarded Suspension模式的架構3 5 
4.3 Guarded Suspension模式實戰案例解析39 
4.4 Guarded Suspension模式的評價與實現考量45 
4.4.1內存可見性和鎖洩漏(Lock Leak)46 
4.4.2線程過早被喚醒46 
4.4.3嵌套監視器鎖死47 
4.5 Guarded Suspension模式的可複用實現代碼50 
4.6 Java標準庫實例50 
4.7相關模式51 
4.7.1 Promise模式(第6章)51 
4.7.2 Producer—Consumer模式(第7章)51 
4.8參考資源51 

第5章Two—phase Termination(兩階段終止)模式52 

5.1 Two—phase Termination模式簡介52 
5.2 Two—phase Termination模式的架構53 
5.3 Two—phase Termination模式實戰案例56 
5.4 Two—phase Termination模式的評價與實現考量63 
5.4.1線程停止標誌63 
5.4.2生產者—消費者問題中的線程停止64 
5.4.3隱藏而非暴露可停止的線程65 
5.5 Two—phase Termination模式的可複用實現代碼65 
5.6 Java標準庫實例66 
5.7相關模式66 
5.7.1 Producer—Consumer模式(第7章)66 
5.7.2 Master—Slave模式(第12章)66 
5.8參 考資源66 

第6章Promise(承諾)模式67 

6.1 Promise模式簡介67 
6.2 Promise模式的架構68 
6.3 Promise模式實戰案例解析70 
6.4 Promise模式的評價與實現考量74 
6.4.1異步方法的異常處理75 
6.4. 2輪詢(Polling)75 
6.4.3異步任務的執行75 
6.5 Promise模式的可複用實現代碼77 
6.6 Java標準庫實例77 
6.7相關模式78 
6.7.1 Guarded Suspension模式(第4章)78 
6.7.2 Active Object模式(第8章)78 
6.7.3 Master—Slave模式(第12章)78 
6.7.4 Factory Method模式78 
6.8參考資源79 

第7章Producer—Consumer(生產者/消費者)模式80 

7.1 Producer —Consumer模式簡介80 
7.2 Producer—Consumer模式的架構80 
7.3 Producer—Consumer模式實戰案例解析83 
7.4 Producer—Consumer模式的評價與實現考量87 
7.4.1通道積壓87 
7.4.2工作竊取算法88 
7.4.3線程的停止92 
7.4.4高性能高可靠性的Producer—Consumer模式實現92 
7.5 Producer—Consumer模式的可複用實現代碼92 
7.6 Java標準庫 例93 
7.7相關模式93 
7.7.1 Guarded Suspension模式(第4章)93 
7.7.2 Thread Pool模式(第9章)93 
7.8參考資源93 

第8章Active Object(主動對象)模式94 

8.1 Active Object模式簡介94 
8.2 Active Object模式的架構95 
8.3 Active Object模式實戰案例解析98 
8.4 Active Object模式的評價與實現考量105 
8.4.1錯誤隔離107 
8.4.2緩衝區監控108 
8.4.3緩衝區飽和處理策略108 
8.4. 4 Scheduler空閒工作者線程清理109 
8.5 Active Object模式的可複用實現代碼109 
8.6 Java標準庫實例111 
8.7相關模式112 
8.7.1 Promise模式(第6章)112 
8.7.2 Producer—Consumer模式(第7章)112 
8.8參考資源112 

第9章Thread Pool(線程池)模式113 

9.1 Thread Pool模式簡介113 
9.2 Thread Pool模式的架構114 
9.3 Thread Pool模式實戰案例解析116 
9.4 Thread Pool模式的評價與實現考量117 
9.4 .1工作隊列的選擇118 
9.4.2線程池大小調校119 
9.4.3線程池監控121 
9.4.4線程洩漏122 
9.4.5可靠性與線 程池飽和處理策略122 
9.4.6死鎖125 
9.4.7線程池空閒線程清理126 
9.5 Thread Pool模式的可複用實現代碼127 
9.6 Java標準庫實例127 
9.7相關模式127 
9.7.1 Two—phase Termination模式(第5章)127 
9.7.2 Promise模式(第6章)127 
9.7.3 Producer—Consumer模式(第7章)127 
9.8參考資源128 
…… 
第10章Thread Specific Storage(線程特有存儲)模式129 
第11章Serial Thread Confinement(串行線程封閉)模式148 
第12章Master—Slave(主僕)模式162 
第13章Pipeline(流水線)模式
第14章Half—sync/Half—async(半同步/半異步)模式
第15章模式語言
附錄A本書常用UML圖指南
參考文獻