買這商品的人也買了...
-
$480$379 -
$653實現領域驅動設計 (Implementing Domain-Driven Design)
-
$480$379 -
$352Java 多線程編程核心技術 (Java Multi-thread Programming)
-
$454JavaEE 開發的顛覆者: Spring Boot實戰
-
$352實戰 Java 高並發程序設計
-
$860$731 -
$590$502 -
$454Spring Cloud 微服務實戰
-
$390$308 -
$450$356 -
$177Java 多線程編程實戰指南 (設計模式篇)
-
$534$507 -
$690$538 -
$454Java 架構師指南
-
$880$695 -
$505碼出高效:Java 開發手冊
-
$714$678 -
$505Java 多線程與 Socket:實戰微服務框架
-
$834$792 -
$774$735 -
$774$735 -
$580$458 -
$505Java 高並發編程詳解:深入理解並發核心庫
-
$658Java 高並發核心編程. 卷2, 多線程、鎖、JMM、JUC、高並發設計模式
相關主題
商品描述
本書共分為四個部分:部分詳細地介紹了Java多線程的基本用法和各個API的使用,並且著重介紹了線程與Java虛擬機內存之間的關系。第二部分由線程上下文類加載器方法引入,介紹為什麽在線程中要有上下文類加載器的方法函數,從而掌握類在JVM的加載和初始化的整個過程。第三部分主要圍繞著volatile關鍵字展開,在該部分中我們將會瞭解到現代CPU的架構以及Java的內存模型(JMM)。後一部分,主要站在架構設計的高度看待如何巧妙地開發出真正具備並發能力的系統。
目錄大綱
前言
第一部分多線程基礎
第1章快速認識線程3
1.1線程的介紹3
1.2快速創建並啟動一個線程3
1.2.1嘗試並行運行4
1.2. 2並發運行交替輸出5
1.2.3使用Jconsole觀察線程6
1.3線程的生命週期詳解7
1.3.1線程的NEW狀態8
1.3.2線程的RUNNABLE狀態8
1.3.3線程的RUNNING狀態8
1.3.4線程的BLOCKED狀態8
1.3.5線程的TERMINATED狀態9
1.4線程的start方法剖析:模板設計模式在Thread中的應用9
1.4.1 Thread start方法源碼分析以及注意事項9
1.4.2模板設計模式在Thread中的應用11
1.4.3 Thread模擬營業大廳叫號機程序13
1.5 Runnable接口的引入以及策略模式在Thread中的使用16
1.5.1 Runnable的職責16
1.5.2策略模式在Thread中的應用16
1.5.3模擬營業大廳叫號機程序18
1.6本章總結19
第2章深入理解Thread構造函數20
2.1線程的命名20
2.1.1線程的默認命名21
2.1.2命名線程21
2.1.3修改線程的名字22
2.2線程的父子關係22
2.3 Thread與ThreadGroup 23
2.4 Thread與Runnable 24
2.5 Thread與JVM虛擬機棧25
2.5.1 Thread與Stacksize 25
2.5.2 JVM內存結構27
2.5.3 Thread與虛擬機棧30
2.6守護線程33
2.6.1什麼是守護線程33
2.6 .2守護線程的作用34
2.7本章總結34
第3章Thread API的詳細介紹35
3.1線程sleep 35
3.1.1 sleep方法介紹35
3.1.2使用TimeUnit替代Thread.sleep 36
3.2線程yield 37
3.2.1 yield方法介紹37
3.2.2 yield和sleep 37
3.3設置線程的優先級38
3.3.1線程優先級介紹38
3.3.2線程優先級源碼分析39
3.3.3關於優先級的一些總結40
3.4獲取線程ID 40
3.5獲取當前線程41
3.6設置線程上下文類加載器41
3.7線程interrupt 42
3.7.1 interrupt 42
3.7.2 isInterrupted 43
3.7.3 interrupted 45
3.7.4 interrupt注意事項46
3.8線程join 47
3.8.1線程join方法詳解48
3.8.2 join方法結合實戰50
3.9如何關閉一個線程53
3.9.1正常關閉54
3.9.2異常退出56
3.9.3進程假死56
3.10本章總結58
第4章線程安全與數據同步59
4.1數據同步59
4.1.1數據不一致問題的引入59
4.1.2數據不一致問題原因分析61
4.2初識synchronized關鍵字62
4.2.1什麼是synchronized 63
4.2.2 synchronized關鍵字的用法63
4.3深入synchronized關鍵字65
4.3.1線程堆棧分析65
4.3.2 JVM指令分析67
4.3.3使用synchronized需要注意的問題70
4.4 This Monitor和Class Monitor的詳細介紹72
4.4.1 this monitor 72
4.4.2 class monitor 74
4.5程序死鎖的原因以及如何診斷77
4.5.1程序死鎖77
4.5 .2程序死鎖舉例77
4.5.3死鎖診斷80
4.6本章總結81
第5章線程間通信82
5.1同步阻塞與異步非阻塞82
5.1.1同步阻塞消息處理82
5.1.2異步非阻塞消息處理83
5.2單線程間通信84
5.2.1初識wait和notify 84
5.2.2 wait和notify方法詳解87
5.2.3關於wait和notify的注意事項89
5.2.4 wait和sleep 90
5.3多線程間通信90
5.3. 1生產者消費者90
5.3.2線程休息室wait set 93
5.4自定義顯式鎖BooleanLock 94
5.4.1 synchronized關鍵字的缺陷94
5.4.2顯式鎖BooleanLock 95
5.5本章總結104
第6章ThreadGroup詳細講解105
6.1 ThreadGroup與Thread 105
6.2創建ThreadGroup 105
6.3複製Thread數組和ThreadGroup數組106
6.3.1複製Thread數組106
6.3.2複製ThreadGroup數組109
6.4 ThreadGroup操作109
6.4.1 ThreadGroup的基本操作110
6.4.2 ThreadGroup的interrupt 113
6.4.3 ThreadGroup的destroy 114
6.4.4守護ThreadGroup 115
6.5本章總結116
第7章Hook線程以及捕獲線程執行異常117
7.1獲取線程運行時異常117
7.1.1 UncaughtExceptionHandler的介紹117
7.1 .2 UncaughtExceptionHandler實例118
7.1.3 UncaughtExceptionHandler源碼分析119
7.2注入鉤子線程121
7.2.1 Hook線程介紹121
7.2.2 Hook線程實戰122
7.2.3 Hook線程應用場景以及注意事項124
7.3本章總結124
第8章線程池原理以及自定義線程池125
8.1線程池原理125
8.2線程池實現126
8.2.1線程池接口定義127
8.2.2線程池詳細實現131
8.3線程池的應用139
8.4本章總結142
第二部分Java ClassLoader
第9章類的加載過程144
9.1類的加載過程簡介144
9.2類的主動使用和被動使用145
9.3類的加載過程詳解148
9.3.1類的加載階段148
9.3.2類的連接階段149
9.3.3類的初始化階段154
9.4本章總結156
第10章JVM類加載器158
10.1 JVM內置三大類加載器158
10.1.1根類加載器介紹159
10.1.2擴展類加載器介紹159
10.1.3系統類加載器介紹160
10.2自定義類加載器161
10.2.1自定義類加載器,問候世界161
10.2.2雙親委託機制詳細介紹165
10.2.3破壞雙親委託機制167
10.2.4類加載器命名空間、運行時包、類的卸載等170
10.3本章總結175
第11章線程上下文類加載器177
11.1為什麼需要線程上下文類加載器177
11.2數據庫驅動的初始化源碼分析178
11.3本章總結180
第三部分深入理解volatile關鍵字
第12章volatile關鍵字的介紹182
12.1初識volatile關鍵字182
12.2機器硬件CPU 184
12.2.1 CPU Cache模型184
12.2.2 CPU緩存一致性問題186
12.3 Java內存模型187
12.4本章總結188
第13章深入volatile關鍵字189
13.1並發編程的三個重要特性189
13.1.1原子性189
13.1.2可見性190
13.1.3有序性190
13.2 JMM如何保證三大特性191
13.2.1 JMM與原子性192
13.2.2 JMM與可見性193
13.2.3 JMM與有序性194
13.3 volatile關鍵字深入解析195
13.3.1 volatile關鍵字的語義195
13.3.2 volatile的原理和實現機制197
13.3.3 volatile的使用場景198
13.3.4 volatile和synchronized 199
13.4本章總結200
第14章7種單例設計模式的設計201
14.1餓漢式201
14.2懶漢式202
14.3懶漢式+同步方法203
14.4 Double-Check 204
14.5 Volatile+Double-Check 206
14.6 Holder方式206
14.7枚舉方式207
14.8本章總結208
第四部分多線程設計架構模式
第15章監控任務的生命週期212
15.1場景描述212
15.2當觀察者模式遇到Thread 212
15.2.1接口定義212
15.2.2 ObservableThread實現215
15.3本章總結217
15.3.1測試運行217
15.3.2關鍵點總結219
第16章Single Thread Execution設計模式220
16.1機場過安檢220
16.1.1非線程安全221
16.1.2問題分析223
16.1.3線程安全225
16.2吃麵問題225
16.2.1吃麵引起的死鎖226
16.2.2解決吃麵引起的死鎖問題228
16.2.3哲學家吃麵229
16.3本章總結230
第17章讀寫鎖分離設計模式231
17.1場景描述231
17.2讀寫分離程序設計232
17.2.1接口定義232
17.2.2程序實現234
17.3讀寫鎖的使用239
17.4本章總結242
第18章不可變對象設計模式244
18.1線程安全性244
18.2不可變對象的設計244
18.2 .1非線程安全的累加器245
18.2.2方法同步增加線程安全性247
18.2.3不可變的累加器對象設計248
18.3本章總結249
第19章Future設計模式251
19.1先給你一張憑據251
19.2 Future設計模式實現251
19.2.1接口定義252
19.2.2程序實現253
19.3 Future的使用以及技巧總結256
19.4增強FutureService使其支持回調257
19.5本章總結258
第20章Guarded Suspension設計模式259
20.1什麼是Guarded Suspension設計模式259
20.2 Guarded Suspension的示例259
20.3本章總結261
第21章線程上下文設計模式262
21.1什麼是上下文262
21.2線程上下文設計263
21.3 ThreadLocal詳解264
21.3. 1 ThreadLocal的使用場景及注意事項265
21.3.2 ThreadLocal的方法詳解及源碼分析265
21.3.3 ThreadLocal的內存洩漏問題分析270
21.4使用ThreadLocal設計線程上下文274
21.5本章總結276
第22章Balking設計模式277
22.1什麼是Balking設計277
22.2 Balking模式之文檔編輯278
22.2.1 Document 278
22.2.2 AutoSaveThread 280
22.2.3 DocumentEditThread 281
22.3本章總結283
第23章Latch設計模式284
23.1什麼是Latch 284
23.2 CountDownLatch程序實現285
23.2.1無限等待的Latch 285
23.2.2有超時設置的Latch 289
23.3本章總結291
第24章Thread-Per-Message設計模式293
24.1什麼是Thread-Per-Message模式293
24.2每個任務一個線程293
24.3多用戶的網絡聊天296
24.3.1服務端程序296
24.3.2響應客戶端連接的Handler 297
24.3.3聊天程序測試299
24.4本章總結300
第25章Two Phase Termination設計模式301
25.1什麼是Two Phase Termination模式301
25.2 Two Phase Termination的示例302
25.2.1線程停止的Two Phase Termination 302
25.2.2進程關閉的Two Phase Termination 303
25.3知識擴展304
25.3.1 Strong Reference及LRUCache 304
25.3.2 Soft Reference及SoftLRUCache 308
25.3. 3 Weak Reference 311
25.3.4 Phantom Reference 312
25.4本章總結314
第26章Worker-Thread設計模式315
26.1什麼是Worker-Thread模式315
26.2 Worker-Thread模式實現315