Java 9併發編程實戰

Javier Fernández González

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

商品描述

《Java 9併發編程實戰》緊緊圍繞Java 9併發類庫和機制,
由淺入深地講解了Java 9併發編程的知識,
並以案例的形式展現如何在真實需求中使用這些類庫。

《Java 9併發編程實戰》共11章。
第1章到第4章主要介紹線程管理、Java同步代碼的基本機制、
線程間同步的工具、線程執行器等內容;第5章介紹fork/join框架的用法;
第6章介紹流的相關知識以及Java 9中用來實現反應式流的接口;
第7章到第9章介紹如何使用Java提供的併發數據結構,
以及如何根據需要擴展Java併發API中常用的類等內容;
第10章和第11章就一些概念和開發注意事項進行拓展,
包括併發數據、監控併發對象等內容。

《Java 9併發編程實戰》給出了完整的案例開發步驟和代碼,
可以讓讀者直面程序運行過程,剖析原理、體會細節,
適合對Java編程感興趣的讀者閱讀。
 

作者簡介

Javier Fernández González 

是一名有著超過10 年Java 技術經驗的軟件架構師。
他曾過擔任過教師,研究員,程序員和分析員,
現在是Java 項目、特別是J2EE 相關項目的架構師。
在擔任教師期間,他在Java 、 J2EE 和Struts 框架上有超過1,000 個小時的教學時間。當研究員時,他曾在信息檢索領域,用Java 開發應用程序來處理大量的數據,
並且是一些期刊文章及和會議演示的合作者。
近些年來,他在不同的領域(比如公共行政,保險,醫療保健,交通,等等)為不同的客戶開發J2EE Web 應用程序。
目前,他在歐洲最大的諮詢公司(Capgemini,凱捷)擔任軟件架構師,
為保險公司開發和維護應用程序。

目錄大綱

目錄  · · · · · ·
第1章線程管理1
1.1簡介1
1.2線程的創建、運行和設置2
1.3線程中斷8
1.4控制線程中斷11
1.5線程的休眠和喚醒14
1.6等待線程執行結束16
1.7守護線程的創建與運行19
1.8處理線程中的不可控異常23
1.9使用線程本地變量26
1.10線程分組及線程組中不可控異常的處理29
1.11使用工廠創建線程33

第2章線程同步基礎37
2.1簡介37
2.2方法同步38
2.3在同步代碼塊中使用條件46
2.4在同步代碼塊中使用鎖機制51
2.5用讀/寫鎖保護同步代碼塊57
2.6在一個鎖中使用多個條件62
2.7高階知識:StampedLock的使用70

第3章線程同步工具78
3.1簡介78
3.2控制對資源的一個或多個副本的並發訪問79
3.3等待多個並發事件85
3.4在指定狀態點同步任務90
3.5運行階段性並發任務98
3.6階段性並發任務中階段轉變的控制108
3.7兩個並發任務間的數據交換114
3.8異步地完成和關聯任務118

第4章線程執行器128
4.1簡介128
4.2創建一個線程執行器並實現其拒絕策略129
4.3在一個執行器裡執行任務並返回結果136
4.4運行多個任務並處理第一個返回結果140
4.5運行多個任務並處理全部返回結果146
4.6在執行器內延遲運行任務150
4.7在執行器內週期性地運行任務154
4.8在執行器內取消任務157
4.9在執行器內控制任務的完成160
4.10在執行器內分離任務的啟動並處理返回結果164

第5章fork/join框架171
5.1簡介171
5.2創建一個fork/join池173
5.3合併任務的執行結果180
5.4異步地運行任務189
5.5在任務中拋出異常196
5.6取消一個任務200

第6章並行反應式流208
6.1簡介208
6.2使用不同的源創建流210
6.3歸約一個流的元素217
6.4收集流中的元素224
6.5把一個動作應用到流的每個元素上231
6.6過濾流中的元素234
6.7轉換流中的元素237
6.8排序流中的元素241
6.9在流中的元素上驗證條件244
6.10在反應式流上反應式編程248

第7章並發集合256
7.1簡介256
7.2運用非阻塞線程安全的雙端隊列257
7.3運用阻塞線程安全的雙端隊列262
7.4運用按優先級排序的阻塞線程安全隊列265
7.5運用帶延遲元素的線程安全列表271
7.6運用線程安全的跳表276
7.7運用線程安全的HashMap 281
7.8運用原子性變量287
7.9運用原子性數組294
7.10運用volatile關鍵字298
7.11運用變量句柄302

第8章自定義並發類307
8.1簡介307
8.2自定義ThreadPoolExecutor類308
8.3實現一個基於優先級的Executor類313
8.4實現ThreadFactory接口來生成自定義線程317
8.5在一個Executor對像中使用ThreadFactory 322
8.6自定義在一個週期調度性線程池中運行的任務324
8.7實現一個ThreadFactory以生成fork/join框架的自定義線程331
8.8自定義運行於fork/join框架中的任務338
8.9實現一個自定義Lock類342
8.10實現一個基於優先級的傳遞隊列348
8.11實現自己的原子性對象359
8.12實現自己的流生成器363
8.13實現自己的異步流369

第9章並發程序的測試378
9.1簡介378
9.2監測Lock接口379
9.3監測Phaser類383
9.4監測Executor框架387
9.5監測fork/join任務池390
9.6監測流395
9.7輸出有效日誌信息397
9.8利用FindBugs分析並發程序代碼402
9.9使用Eclipse調試並發程序代碼406
9.10使用NetBeans調試並發程序代碼408
9.11使用MultithreadedTC調試並發程序代碼413
9.12使用JConsole監測416

第10章附加信息421
10.1簡介421
10.2在Executor框架中處理Runnable對象的結果421
10.3在ForkJoinPool類中處理未控制的異常427
10.4使用線程安全的阻塞隊列在生產者和消費者之間進行交互431
10.5監測Thread類436
10.6監測Semaphore類440
10.7生成並發隨機數443

第11章並發編程設計445
11.1簡介445
11.2盡可能使用不可變對象446
11.3對鎖排序以避免死鎖449
11.4使用原子變量替代同步451
11.5盡可能短地持有鎖455
11.6委託執行器管理線程459
11.7使用並發數據結構替代手動編程462
11.8使用延遲初始化預防問題464
11.9使用fork/join框架替代執行器466
11.10避免在鎖中使用阻塞操作470
11.11避免使用已棄用的方法472
11.12使用執行器替代線程組473
11.13使用流處理大數據集474
11.14其他提示和技巧479