《Java並行程式設計》圖書已由清華大學出版社出版。該書由河北科技大學信息科學與工程學院計算機系張楊編寫。
許多書中將Java多執行緒知識描述為並發(Concurrency),並行和並發是有區別的,但在本書中沒有刻意的區別並行和並發。
本書以Java程式設計語言為基礎,對並行程式設計的相關概念、基本原理和基本方法進行了介紹,具體涉及執行緒定義、執行緒同步、執行緒障柵、執行緒間通信、執行器、Fork/Join框架和自定義的並發類等內容。本書在講解基本知識的同時,大量使用實例進行演示,演示採用“提出問題—分析問題—代碼演示—執行結果—分析結果—相關討論”的思路,力求做到明白透徹。
本書適合普通高校、實踐和工程類院校學生在學習高性能程式設計時選用,是高等院校學生和IT領域在職人員學習Java高級編程技術的理想教材和工具書,也可以作為那些需要高性能計算技術的人員的自修參考用書。
基本介紹
- 中文名:Java並行程式設計
- 外文名:Java parallel programming
《Java並行程式設計》圖書目錄如下:
1.1概述1
1.2相關概念和術語2
1.2.1並發與並行2
1.2.2串列執行和順序執行4
1.2.3執行緒安全與執行緒不安全4
1.2.4數據競爭5
1.2.5超執行緒5
1.2.6加速比6
1.3Java並發方面的特性7
1.4並發程式設計的方法8
1.4.1分治方法8
1.4.2流水線8
1.4.3訊息傳遞9
1.5並行程式的評判標準9
1.6程式運行的相關問題說明10
第2章執行緒/12
2.1什麼是執行緒12
2.2執行緒的狀態13
2.2.1創建13
2.2.2就緒13
2.2.3運行14
2.2.4阻塞14
2.2.5終止14
2.3執行緒的創建15
2.3.1繼承類Thread15
2.3.2實現Runnable接口16
2.3.3兩種方法的比較18
1.2相關概念和術語2
1.2.1並發與並行2
1.2.2串列執行和順序執行4
1.2.3執行緒安全與執行緒不安全4
1.2.4數據競爭5
1.2.5超執行緒5
1.2.6加速比6
1.3Java並發方面的特性7
1.4並發程式設計的方法8
1.4.1分治方法8
1.4.2流水線8
1.4.3訊息傳遞9
1.5並行程式的評判標準9
1.6程式運行的相關問題說明10
第2章執行緒/12
2.1什麼是執行緒12
2.2執行緒的狀態13
2.2.1創建13
2.2.2就緒13
2.2.3運行14
2.2.4阻塞14
2.2.5終止14
2.3執行緒的創建15
2.3.1繼承類Thread15
2.3.2實現Runnable接口16
2.3.3兩種方法的比較18
2.4執行緒的屬性18
2.4.1執行緒標識符18
2.4.2執行緒名20
2.4.3執行緒的優先權和調度23
2.4.4執行緒狀態26
2.4.5守護執行緒28
2.5執行緒管理31
2.5.1join方法32
2.5.2sleep方法35
2.5.3yield方法36
2.5.4執行緒的中斷36
2.5.5其他38
2.6執行緒分組38
2.7帶返回值的執行緒41
2.7.1接口Callable41
2.7.2接口Future41
2.7.3Callable與Runnable的比較45
第3章執行緒同步/46
3.1概述46
3.2基本概念48
3.2.1臨界區48
3.2.2監視器49
3.2.3阻塞和非阻塞49
3.3鎖49
3.3.1同步鎖50
3.3.2可重入鎖52
3.3.3讀寫鎖60
3.3.4三種鎖機制的比較66
3.3.5鎖的不足之處66
3.4volatile變數67
3.5原子操作68
3.5.1AtomicInteger68
3.5.2AtomicReference71
3.5.3其他73
3.6死鎖和活鎖73
3.6.1死鎖73
3.6.2活鎖76
3.7多核時代減少鎖競爭的方法78
第4章執行緒間通信/80
4.1等待集合80
4.2wait、notify、notifyAll方法80
4.2.1方法wait80
4.2.2方法notify81
4.2.3方法notifyAll81
4.2.4實例81
4.3條件變數88
4.3.1方法await89
4.3.2方法signal89
4.3.3方法signalAll89
4.3.4實例90
第5章執行緒同步障柵/94
5.1障柵94
5.2倒計時門閂99
5.3信號量102
5.4同步佇列107
5.5交換器110
5.6階段化處理114
第6章執行緒執行器/124
6.1執行緒池124
6.1.1接口Executor125
6.1.2接口ExecutorService125
6.1.3類ThreadPoolExecutor125
6.1.4工廠類Executors126
6.1.5使用執行緒執行器處理無返回值的執行緒127
6.2固定數目的執行緒執行器129
6.3使用執行緒執行器處理有返回值的執行緒131
6.4延遲執行、周期性執行的執行器134
6.4.1接口ScheduledExecutorService134
6.4.2接口ScheduledFuture135
6.4.3舉例135
6.5取消任務的執行138
6.6任務裝載和結果處理的分離140
6.7管理被拒絕的任務142
第7章Fork/Join框架/145
7.1概述145
7.2相關知識146
7.2.1負載均衡146
7.2.2分治方法146
7.2.3工作竊取算法147
7.3Fork/Join框架的編程模式147
7.4類ForkJoinPool148
7.4.1ForkJoinPool的創建148
7.4.2ForkJoinPool的使用149
7.5任務150
7.5.1任務的創建150
7.5.2任務的運行方式158
7.5.3任務的取消160
7.6Fork/Join框架的限制164
第8章自定義並發類/165
8.1自定義執行緒工廠165
8.2自定義執行緒池167
8.3在執行器中使用自定義的執行緒工廠169
8.4自定義周期性任務171
8.5自定義與Fork/Join框架相關的並發類175
8.5.1類ForkJoinWorkerThread175
8.5.2接口ForkJoinPool.ForkJoinWorkerThreadFactory176
8.5.3自定義Fork/Join框架中的執行緒176
8.5.4自定義任務179
8.6自定義同步類181
8.6.1自定義鎖182
8.6.2自定義原子操作185
第9章執行緒安全的集合/188
9.1執行緒安全的雙端佇列188
9.2執行緒安全的哈希表192
9.3執行緒安全的跳表194
9.4隨機數產生196
第10章多執行緒程式的性能和測試/198
10.1性能198
10.2可伸縮性200
10.3多執行緒程式的測試200
第11章面向方面編程在並行程式設計中的套用/201
11.1面向方面編程相關知識簡介201
11.1.1關注點的分離201
11.1.2方面201
11.1.3切點202
11.1.4通知202
11.1.5AspectJ工具202
11.2Java注釋接口204
11.3套用示例205
2.4.1執行緒標識符18
2.4.2執行緒名20
2.4.3執行緒的優先權和調度23
2.4.4執行緒狀態26
2.4.5守護執行緒28
2.5執行緒管理31
2.5.1join方法32
2.5.2sleep方法35
2.5.3yield方法36
2.5.4執行緒的中斷36
2.5.5其他38
2.6執行緒分組38
2.7帶返回值的執行緒41
2.7.1接口Callable41
2.7.2接口Future41
2.7.3Callable與Runnable的比較45
第3章執行緒同步/46
3.1概述46
3.2基本概念48
3.2.1臨界區48
3.2.2監視器49
3.2.3阻塞和非阻塞49
3.3鎖49
3.3.1同步鎖50
3.3.2可重入鎖52
3.3.3讀寫鎖60
3.3.4三種鎖機制的比較66
3.3.5鎖的不足之處66
3.4volatile變數67
3.5原子操作68
3.5.1AtomicInteger68
3.5.2AtomicReference71
3.5.3其他73
3.6死鎖和活鎖73
3.6.1死鎖73
3.6.2活鎖76
3.7多核時代減少鎖競爭的方法78
第4章執行緒間通信/80
4.1等待集合80
4.2wait、notify、notifyAll方法80
4.2.1方法wait80
4.2.2方法notify81
4.2.3方法notifyAll81
4.2.4實例81
4.3條件變數88
4.3.1方法await89
4.3.2方法signal89
4.3.3方法signalAll89
4.3.4實例90
第5章執行緒同步障柵/94
5.1障柵94
5.2倒計時門閂99
5.3信號量102
5.4同步佇列107
5.5交換器110
5.6階段化處理114
第6章執行緒執行器/124
6.1執行緒池124
6.1.1接口Executor125
6.1.2接口ExecutorService125
6.1.3類ThreadPoolExecutor125
6.1.4工廠類Executors126
6.1.5使用執行緒執行器處理無返回值的執行緒127
6.2固定數目的執行緒執行器129
6.3使用執行緒執行器處理有返回值的執行緒131
6.4延遲執行、周期性執行的執行器134
6.4.1接口ScheduledExecutorService134
6.4.2接口ScheduledFuture135
6.4.3舉例135
6.5取消任務的執行138
6.6任務裝載和結果處理的分離140
6.7管理被拒絕的任務142
第7章Fork/Join框架/145
7.1概述145
7.2相關知識146
7.2.1負載均衡146
7.2.2分治方法146
7.2.3工作竊取算法147
7.3Fork/Join框架的編程模式147
7.4類ForkJoinPool148
7.4.1ForkJoinPool的創建148
7.4.2ForkJoinPool的使用149
7.5任務150
7.5.1任務的創建150
7.5.2任務的運行方式158
7.5.3任務的取消160
7.6Fork/Join框架的限制164
第8章自定義並發類/165
8.1自定義執行緒工廠165
8.2自定義執行緒池167
8.3在執行器中使用自定義的執行緒工廠169
8.4自定義周期性任務171
8.5自定義與Fork/Join框架相關的並發類175
8.5.1類ForkJoinWorkerThread175
8.5.2接口ForkJoinPool.ForkJoinWorkerThreadFactory176
8.5.3自定義Fork/Join框架中的執行緒176
8.5.4自定義任務179
8.6自定義同步類181
8.6.1自定義鎖182
8.6.2自定義原子操作185
第9章執行緒安全的集合/188
9.1執行緒安全的雙端佇列188
9.2執行緒安全的哈希表192
9.3執行緒安全的跳表194
9.4隨機數產生196
第10章多執行緒程式的性能和測試/198
10.1性能198
10.2可伸縮性200
10.3多執行緒程式的測試200
第11章面向方面編程在並行程式設計中的套用/201
11.1面向方面編程相關知識簡介201
11.1.1關注點的分離201
11.1.2方面201
11.1.3切點202
11.1.4通知202
11.1.5AspectJ工具202
11.2Java注釋接口204
11.3套用示例205