Java多執行緒與執行緒池技術詳解

Java多執行緒與執行緒池技術詳解

《Java多執行緒與執行緒池技術詳解》是2021年清華大學出版社出版的一本圖書,作者:肖海鵬 牟東旭。

基本介紹

  • 中文名:Java多執行緒與執行緒池技術詳解
  • 作者:肖海鵬 牟東旭
  • 出版時間:2021年5月
  • 出版社清華大學出版社
  • ISBN:9787302573739 
  • 開本:16 開
內容簡介,作者簡介,圖書目錄,

內容簡介

《Java多執行緒與執行緒池技術詳解》全面、系統地講解了多執行緒和執行緒池技術。  《Java多執行緒與執行緒池技術詳解》共分為10章,第1~3章為基本的多執行緒技術基礎,包含創建執行緒、執行緒狀態轉換、執行緒間同步等內容。第4~8章為執行緒池技術,包含自定義執行緒池、通過Executors工具類創建執行緒池、執行緒池的底層阻塞佇列結構、重入鎖等內容。第9章和第10章為多執行緒技術的套用部分,包含基於Tomcat的執行緒池套用、基於ThreadLocal的資料庫連線管理、生成唯一的訂單號等內容。  《Java多執行緒與執行緒池技術詳解》提供了大量套用實例,每章後面均附有習題。《Java多執行緒與執行緒池技術詳解》適合作為高等院校計算機、軟體工程專業高年級本科生、研究生的教材,同時可供有一定編程經驗的軟體開發人員、廣大科技工作者和研究人員在進行多執行緒編程時參考使用。

作者簡介

肖海鵬 人力資源和社會保障部高級職稱;51CTO金牌講師;具有10年大型項目經驗和10年Java教學經驗;曾任職E龍網架構師、TechFaith系統工程師等。在網路上推出了“Java Web套用開發技術”“SSM SpringBoot實戰技術”“多執行緒與執行緒池技術詳解”等視頻教程,廣受網友好評。
牟東旭 富景天策(北京)科技集團公司高級項目經理。多年從事網際網路一線開發工作,曾在某網際網路教育機構擔任高級講師,精通SSM、SpringBoot、SpringCloud等主流Java開源框架以及Hadoop、Kafka、Hive、HBASE Storm、Spark、Kylin等主流大數據技術。目前專注於專業氣象服務領域的產品策劃、技術架構和產品開發工作。

圖書目錄

第1章 多執行緒基礎 1
1.1 進程與執行緒 1
1.1.1 作業系統與進程 1
1.1.2 執行緒與進程的關係 2
1.2 多執行緒啟動 3
1.2.1 執行緒標識 5
1.2.2 Thread與Runnable 6
1.2.3 run( )與start( ) 7
1.2.4 Thread源碼分析 9
1.3 執行緒狀態 11
1.3.1 NEW狀態 11
1.3.2 RUNNABLE狀態 12
1.3.3 BLOCKED狀態 13
1.3.4 WAITING狀態 14
1.3.5 TIMED_WAITING狀態 19
1.3.6 WAITING與BLOCKED的區別 21
1.3.7 TERMINATED狀態 21
1.3.8 執行緒狀態轉換 22
1.4 sleep( )與yield( ) 22
1.4.1 執行緒休眠sleep( ) 22
1.4.2 執行緒讓步yield( ) 24
1.5 執行緒優先權 25
1.5.1 執行緒優先權與資源競爭 26
1.5.2 案例:大型浮點運算測試 26
1.5.3 案例:多執行緒售票 28
1.6 守護執行緒 30
1.6.1 守護執行緒的概念 30
1.6.2 案例:清道夫與工作者 31
1.7 本章習題 34
第2章 執行緒安全與共享資源競爭 37
2.1 synchronized同步介紹 37
2.2 synchronized同步方法 38
2.2.1 同步方法調用流程 41
2.2.2 同步方法之間的互斥 41
2.2.3 同步方法與非同步方法 44
2.3 synchronized同步靜態方法 46
2.3.1 單例高並發問題 46
2.3.2 類鎖與對象鎖 47
2.3.3 靜態同步方法之間互斥 47
2.3.4 靜態同步方法與靜態非同步方法 49
2.4 synchronized同步代碼塊 50
2.4.1 鎖當前對象 50
2.4.2 鎖其他對象 51
2.4.3 鎖Class 51
2.5 項目案例:火車售票 52
2.5.1 共享任務模式 52
2.5.2 多任務模式 55
2.5.3 共享車票資源 56
2.6 項目案例:家庭消費 59
2.7 項目案例:別墅Party 63
2.7.1 無鎖模式 63
2.7.2 單鎖模式 66
2.7.3 雙鎖模式 67
2.8 JDK常見類的執行緒安全性 69
2.8.1 集合ArrayList與Vector 69
2.8.2 StringBuffer與StringBuilder 71
2.8.3 HashMap與ConcurrentHashMap 72
2.9 本章習題 73
第3章 多執行緒通信 76
3.1 wait( )與notify( ) 76
3.1.1 阻塞當前執行緒 76
3.1.2 案例分析:廚師與侍者1 78
3.1.3 案例分析:廚師與侍者2 81
3.1.4 案例分析:兩個執行緒交替輸出信息 85
3.2 join執行緒排隊 87
3.2.1 加入者與休眠者 87
3.2.2 案例:緊急任務處理 89
3.2.3 join限時阻塞 91
3.3 執行緒中斷 93
3.3.1 中斷運行態執行緒 93
3.3.2 中斷阻塞態執行緒 95
3.3.3 如何停止執行緒 97
3.4 CountDownLatch計數器 98
3.5 CyclicBarrier屏障 100
3.5.1 案例:矩陣分行處理 101
3.5.2 案例:賽馬遊戲 103
3.6 Exchanger 104
3.7 Semaphore信號燈 107
3.8 死鎖 108
3.8.1 案例:銀行轉賬引發死鎖 109
3.8.2 案例:哲學家就餐死鎖 112
3.9 本章習題 115
第4章 執行緒池入門 117
4.1 ThreadPoolExecutor 117
4.1.1 創建執行緒池 118
4.1.2 關閉執行緒池 121
4.2 Executor接口 123
4.3 ExecutorService接口 124
4.3.1 Callable返回任務執行結果 125
4.3.2 shutdown與shutdownNow 127
4.4 Executors工具箱 127
4.4.1 newCachedThreadPool 128
4.4.2 newFixedThreadPool 133
4.4.3 newSingleThreadExecutor 137
4.4.4 newScheduledThreadPool 141
4.4.5 newWorkStealingPool 143
4.5 執行緒工廠與執行緒組 151
4.5.1 執行緒組 151
4.5.2 執行緒與執行緒組 152
4.5.3 執行緒工廠接口 155
4.5.4 默認執行緒工廠實現 156
4.5.5 執行緒池與執行緒工廠 157
4.6 執行緒池異常處理 158
4.6.1 異常捕獲 158
4.6.2 UncaughtExceptionHandler處理異常 158
4.6.3 Future處理異常 161
4.7 本章習題 163
第5章 執行緒池與鎖 165
5.1 重入鎖ReentrantLock 165
5.1.1 重入鎖 166
5.1.2 互斥鎖 167
5.1.3 ReentrantLock與synchronized 169
5.1.4 嘗試加鎖並限時等待 171
5.2 重入鎖與Condition 173
5.2.1 案例分析:廚師與侍者 176
5.2.2 案例分析:緩衝區佇列 178
5.3 讀鎖與寫鎖 181
5.3.1 案例:並發讀寫集合 182
5.3.2 案例:Map並發控制 193
5.3.3 資料庫事務與鎖 197
5.4 公平鎖與非公平鎖 198
5.5 本章習題 201
第6章 執行緒池與阻塞佇列 202
6.1 Queue接口 202
6.2 BlockingQueue接口 202
6.3 BlockingQueue實現類 203
6.4 LinkedBlockingQueue與ArrayBlockingQueue 203
6.4.1 阻塞佇列的單鎖與雙鎖 204
6.4.2 ArrayBlockingQueue並發分析 205
6.4.3 LinkedBlockingQueue並發分析 206
6.4.4 案例:12306搶票 208
6.5 生產者與消費者模式 210
6.5.1 基於管道傳送與接收訊息 211
6.5.2 基於阻塞佇列傳送與接收訊息 213
6.5.3 案例:醫院掛號 213
6.6 SynchronousQueue 217
6.6.1 同步佇列套用場景 217
6.6.2 案例:Web伺服器處理並發請求 218
6.7 延遲阻塞佇列 220
6.7.1 案例:元素延遲出隊 221
6.7.2 項目案例:Web伺服器會話管理 222
6.8 PriorityBlockingQueue 226
案例:按優先權執行任務 226
6.9 LinkedTransferQueue 228
6.10 LinkedBlockingDeque 229
6.11 本章習題 229
第7章 執行緒池與AQS 231
7.1 acquire與release 231
7.2 性能目標 232
7.3 設計與實現 233
7.3.1 同步狀態 233
7.3.2 阻塞 244
7.3.3 排隊 246
7.3.4 條件佇列 248
7.4 使用AQS 249
7.4.1 控制公平性 250
7.4.2 同步器 251
7.5 AQS性能 252
7.5.1 過載 253
7.5.2 吞吐量 254
7.6 本章習題 255
第8章 結束執行緒與執行緒池任務 257
8.1 stop( )與destroy( ) 257
8.2 狀態值結束執行緒 258
8.3 shutdown( )與shutdownNow( ) 258
8.4 執行緒休眠 258
8.5 執行緒中斷 258
8.6 Future與FutureTask 258
8.6.1 取消任務 259
8.6.2 任務逾時結束 263
8.7 項目案例:所有執行緒池任務暫停與重啟 264
8.8 本章習題 267
第9章 Tomcat執行緒池技術 268
9.1 自定義ThreadPoolExecutor 268
9.2 Tomcat任務佇列 270
9.3 Tomcat任務執行緒 270
9.4 Tomcat任務執行緒工廠 271
9.5 Tomcat連線器與執行緒池 272
9.6 創建Tomcat執行緒池 274
9.7 Web伺服器異步環境 275
案例:AsyncContext調用業務方法 276
9.8 Web伺服器NIO 278
案例:伺服器NIO處理請求 279
9.9 本章習題 281
第10章 並發編程套用 283
10.1 JVM與多執行緒 283
10.2 Servlet與多執行緒 284
10.3 懶漢與惡漢模式 286
10.4 資料庫Connection與多執行緒 288
10.4.1 ThreadLocal與執行緒私有數據 289
10.4.2 ThreadLocal存儲資料庫Connection 291
10.4.3 ThreadLocal實現Connection per logic模式 293
10.4.4 ThreadLocal實現Connection per request模式 294
10.5 高並發網站的PageView統計 295
10.6 生成唯一的訂單號 296
10.7 瀏覽器並發請求限制 298
10.8 NIO與多路復用 301
10.9 遠程異步訪問 302
10.10 防止快取雪崩的DCL機制 305
10.11 分散式鎖解決商品超賣 309
參考文獻 314

相關詞條

熱門詞條

聯絡我們