-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
圖解Java并發編程 版權信息
- ISBN:9787115561732
- 條形碼:9787115561732 ; 978-7-115-56173-2
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
圖解Java并發編程 本書特色
1.采用“圖例勝千言”的寫作方法進行介紹,通過200多張示意圖幫助讀者理解知識點,每個重點和關鍵點均附有相關圖示; 2.提供了100多個代碼案例來講解Java并發相關的原理和具體實現,讓讀者可以從代碼的角度理解并發是如何實現的; 3.本書組織結構清晰,由基礎概念到高層工具,循序漸進的講解相關知識點,具備基礎的Java編程知識后便可以通過本書學習; 4.講解的Java并發知識均來源于實際項目,同時本書贈送源代碼以及書中的彩圖文件,方便讀者自己動手在實際項目中練習。
圖解Java并發編程 內容簡介
本書采用圖文并茂外加大量案例代碼的方式講解了Java并發編程機制的運行原理。本書分為12章,內容涵蓋了線程機制、線程I/O模型、Java內存模型、并發知識、AQS同步器、常見的同步器、原子類、阻塞隊列、鎖、任務執行器、其他并發工具等內容。此外,還在很后一章介紹了如何使用C++來模擬實現Java線程。本書適合Java中不錯開發人員、對Java并發編程機制感興趣的人員以及Java架構師閱讀。
圖解Java并發編程 目錄
1.1 線程是什么 1
1.2 線程的映射 3
1.2.1 多對一映射 4
1.2.2 一對一映射 4
1.2.3 多對多映射 5
1.2.4 Java層到內核層 6
1.3 Java線程的狀態 7
1.4 Java線程的調度 10
1.5 Java線程的優先級與執行機制 11
1.6 Java線程的CPU時間 14
1.7 Java線程的yield操作 15
1.8 Java線程的sleep操作 17
1.9 Java線程的Interrupt操作 20
1.9.1 可運行狀態的中斷 23
1.9.2 阻塞/等待狀態的中斷 23
1.9.3 經典中斷實現方式 24
1.9.4 park的特殊中斷 26
1.10 Java線程的阻塞與喚醒 26
1.11 Java線程的join操作 34
第 2章 線程I/O模型 38
2.1 線程與阻塞I/O 38
2.1.1 單線程阻塞I/O模型 39
2.1.2 多線程阻塞I/O模型 40
2.2 線程與非阻塞I/O模型 41
2.2.1 應用層I/O多路復用 43
2.2.2 內核I/O多路復用 43
2.2.3 內核回調事件驅動I/O 44
2.3 Java多線程非阻塞I/O模型 46
2.4 多線程帶來了什么 48
2.4.1 提升執行效率 49
2.4.2 提升用戶體驗 50
2.4.3 讓編碼更難 50
2.4.4 資源開銷與上下文切換開銷 51
第3章 Java內存模型 53
3.1 計算機的運行 53
3.2 Java內存模型 56
3.3 volatile能否保證線程安全 59
3.4 happens-before原則 62
3.4.1 單線程原則 65
3.4.2 鎖原則 66
3.4.3 volatile原則 67
3.4.4 線程start原則 67
3.4.5 線程join原則 68
3.4.6 線程interrupt原則 68
3.4.7 finalize原則 69
3.4.8 傳遞原則 70
3.5 Java指令重排 70
第4章 并發知識 75
4.1 synchronized互斥鎖 75
4.1.1 作用在對象方法上 76
4.1.2 作用在類靜態方法上 79
4.1.3 作用在對象方法里面 80
4.1.4 作用在類靜態方法里面 81
4.2 樂觀的并發策略 85
4.3 自旋鎖 87
4.3.1 UMA架構與NUMA架構 88
4.3.2 原始自旋鎖 90
4.3.3 排隊自旋鎖 91
4.3.4 CLH鎖 93
4.3.5 MCS鎖 95
4.4 線程饑餓 97
4.4.1 synchronized饑餓 97
4.4.2 優先級饑餓 99
4.4.3 線程自旋饑餓 100
4.4.4 等待喚醒饑餓 101
4.4.5 公平性解決饑餓 102
4.5 數據競爭 104
4.6 競爭條件 108
4.6.1 線程執行順序的不確定性 110
4.6.2 并發機制 111
4.7 死鎖 113
4.7.1 鎖的順序化 116
4.7.2 資源合并 116
4.7.3 避免鎖嵌套 117
4.7.4 鎖超時機制 117
4.7.5 搶占資源機制 118
4.7.6 撤銷線程機制 118
4.7.7 死鎖的檢測 119
第5章 AQS同步器 120
5.1 什么是AQS同步器 120
5.2 AQS的等待隊列與狀態轉換 120
5.3 AQS的獨占鎖與共享鎖 125
5.4 AQS獨占鎖獲取與釋放 127
5.4.1 獲取獨占鎖的邏輯 128
5.4.2 嘗試獲取獨占鎖 130
5.4.3 入隊操作邏輯 130
5.4.4 入隊后的操作 132
5.4.5 虛節點可能消失 133
5.4.6 取消鎖獲取操作 134
5.4.7 喚醒后繼節點 136
5.4.8 釋放獨占鎖的邏輯 137
5.5 AQS共享鎖獲取與釋放 138
5.5.1 獲取共享鎖的邏輯 138
5.5.2 入隊操作 140
5.5.3 入隊后的操作 140
5.5.4 引入PROPAGATE狀態 143
5.5.5 釋放共享鎖的邏輯 146
5.6 AQS的阻塞與喚醒 146
5.6.1 許可機制 148
5.6.2 LockSupport示例 149
5.6.3 park與unpark的順序 150
5.6.4 park對中斷的響應 151
5.6.5 park是否會釋放鎖 152
5.6.6 LockSupport的實現 154
5.7 AQS的中斷機制 156
5.7.1 synchronized不支持中斷 157
5.7.2 AQS獨占模式的中斷 158
5.7.3 AQS共享模式的中斷 160
5.8 AQS的超時機制 161
5.8.1 synchronized不支持超時 161
5.8.2 AQS獨占模式的超時 162
5.8.3 AQS共享模式的超時 163
5.9 AQS的原子性如何保證 164
5.10 AQS的自旋鎖 175
5.11 AQS的公平性 177
5.12 AQS的條件隊列 179
5.12.1 await方法 179
5.12.2 signal方法 182
5.13 AQS自定義同步器 183
5.13.1 AQS設計思想 183
5.13.2 獨占模式 184
5.13.3 共享模式 186
第6章 常見的同步器 189
6.1 常見的同步器 189
6.2 閉鎖 192
6.3 信號量 197
6.3.1 非公平模式的實現 198
6.3.2 公平模式的實現 201
6.3.3 信號量的使用示例 202
6.4 循環屏障 204
6.5 相位器 210
6.5.1 相位器的主要概念及方法 211
6.5.2 相位器的3個例子 212
6.5.3 相位器的狀態示意圖 215
6.5.4 相位器的實現原理 216
6.6 交換器 220
6.6.1 交換器的實現原理 223
6.6.2 交換器的單槽模式 226
6.6.3 交換器的多槽模式 228
第7章 原子類 233
7.1 原子整型 233
7.1.1 一行代碼等于原子性嗎 233
7.1.2 volatile能保證原子性嗎 234
7.1.3 synchronized能解決問題嗎 235
7.1.4 AtomicInteger 237
7.1.5 實現原理 238
7.2 原子引用 239
7.3 原子數組 243
7.3.1 AtomicIntegerArray 244
7.3.2 AtomicLongArray 247
7.3.3 AtomicReferenceArray 248
7.4 原子變量更新器 249
第8章 阻塞隊列 254
8.1 阻塞隊列概述 254
8.2 數組阻塞隊列 258
8.3 鏈表阻塞隊列 263
8.4 優先級阻塞隊列 271
8.5 延遲阻塞隊列 279
8.5.1 優先級隊列 281
8.5.2 DelayQueue的阻塞與喚醒 283
8.5.3 DelayQueue的實現原理 284
8.6 鏈表阻塞的雙向隊列 288
第9章 鎖 298
9.1 可重入鎖 298
9.1.1 非公平模式的實現 299
9.1.2 公平模式的實現 301
9.1.3 公平模式的3個示例 302
9.2 讀寫鎖 305
9.2.1 讀寫鎖的性質 306
9.2.2 簡單的實現版本 307
9.2.3 讀寫鎖的升級與降級 308
9.2.4 讀寫鎖的實現思想 309
9.2.5 讀寫鎖的共用狀態變量 312
9.2.6 讀寫鎖的公平/非公平模式 313
9.2.7 寫鎖的實現 314
9.2.8 讀鎖的實現 315
9.2.9 讀寫鎖的使用示例 317
9.3 鎖的條件機制 318
9.3.1 wait/notify模式 318
9.3.2 Condition 320
第 10章 任務執行器 322
10.1 任務執行器接口 322
10.1.1 同步執行器 322
10.1.2 一對一執行器 323
10.1.3 線程池執行器 323
10.1.4 串行執行器 325
10.2 任務執行器的ExecutorService接口 326
10.3 線程池任務執行器 331
10.3.1 線程池任務執行器的運行狀態 332
10.3.2 線程池任務執行器的使用示例 334
10.3.3 線程池任務執行器的實現原理 335
第 11章 其他并發工具 344
11.1 線程本地變量 344
11.1.1 線程本地變量的使用示例 344
11.1.2 線程本地變量的3個主要方法 346
11.1.3 JDK中線程本地變量的實現思想 347
11.1.4 JDK中線程本地變量的實現源碼 348
11.1.5 線程本地變量的內存泄漏 352
11.2 寫時復制數組列表 353
第 12章 C++模擬實現Java線程 359
12.1 模擬實現Java線程 359
12.2 模擬實現yield語義 365
12.3 模擬實現sleep操作 367
12.4 模擬實現synchronized語義 369
12.5 模擬實現Interrupt操作 372
圖解Java并發編程 作者簡介
汪建,筆名 seaboat,畢業于廣東工業大學光信息科學與技術專業,畢業后從事各類業務系統、中間件、基礎架構、人工智能系統等研發工作,目前致力于用AI提升企業業務系統效率以節約人力成本。擅長工程算法、人工智能算法、自然語言處理、計算機視覺、架構、分布式、高并發、大數據、搜索引擎等方面的技術,會使用大多數編程語言,更擅長Java、Python和C++。平時喜歡看書、運動、寫作、編程、繪畫。崇尚開源,崇尚技術自由。已出版的圖書有《圖解數據結構與算法》《Tomcat內核設計剖析》。 個人博客:blog.csdn.net/wangyangzhizhou。
- >
姑媽的寶刀
- >
名家帶你讀魯迅:故事新編
- >
自卑與超越
- >
伊索寓言-世界文學名著典藏-全譯本
- >
山海經
- >
李白與唐代文化
- >
詩經-先民的歌唱
- >
羅庸西南聯大授課錄