《Java并發(fā)編程實(shí)戰(zhàn)》機(jī)械工業(yè)出版社 童云蘭譯 PDF下載(Java Concurrency in Practice中文版)

下載地址:http://www.ishare1.cn/archives/813.html

《Java并發(fā)編程實(shí)戰(zhàn)》機(jī)械工業(yè)出版社 童云蘭譯 PDF電子書下載(Java Concurrency in Practice中文版)

內(nèi)容簡介·?·?·?·?·?·

本書深入淺出地介紹了Java線程和并發(fā),是一本完美的Java并發(fā)參考手冊漏峰。書中從并發(fā)性和線程安全性的基本概念出發(fā)靶溜,介紹了如何使用類庫提供的基本并發(fā)構(gòu)建塊妨蛹,用于避免并發(fā)危險(xiǎn)扶供、構(gòu)造線程安全的類及驗(yàn)證線程安全的規(guī)則玻侥,如何將小的線程安全類組合成更大的線程安全類店雅,如何利用線程來提高并發(fā)應(yīng)用程序的吞吐量阵子,如何識別可并行執(zhí)行的任務(wù)思杯,如何提高單線程子系統(tǒng)的響應(yīng)性,如何確保并發(fā)程序執(zhí)行預(yù)期任務(wù)挠进,如何提高并發(fā)代碼的性能和可伸縮性等內(nèi)容色乾,最后介紹了一些高級主題,如顯式鎖领突、原子變量暖璧、非阻塞算法以及如何開發(fā)自定義的同步工具類。

本書適合Java程序開發(fā)人員閱讀君旦。

作者簡介·?·?·?·?·?·

本書作者都是Java Community Process JSR 166專家組(并發(fā)工具)的主要成員澎办,并在其他很多JCP專家組里任職。Brian Goetz有20多年的軟件咨詢行業(yè)經(jīng)驗(yàn)金砍,并著有至少75篇關(guān)于Java開發(fā)的文章局蚀。Tim Peierls是“現(xiàn)代多處理器”的典范,他在BoxPop.biz恕稠、唱片藝術(shù)和戲劇表演方面也頗有研究琅绅。Joseph Bowbeer是一個Java ME專家,他對并發(fā)編程的興趣始于Apollo計(jì)算機(jī)時(shí)代鹅巍。David Holmes是《The Java Programming Language》一書的合著者千扶,任職于Sun公司。Joshua Bloch是Google公司的首席Java架構(gòu)師骆捧,《Effective Java》一書的作者澎羞,并參與著作了《Java Puzzlers》。Doug Lea是《Concurrent Programming》一書的作者凑懂,紐約州立大學(xué) Oswego分校的計(jì)算機(jī)科學(xué)教授煤痕。

目錄·?·?·?·?·?·

對本書的贊譽(yù)

譯者序

前 言

第1章 簡介1

1.1 并發(fā)簡史1

1.2 線程的優(yōu)勢2

1.2.1 發(fā)揮多處理器的強(qiáng)大能力2

1.2.2 建模的簡單性3

1.2.3 異步事件的簡化處理3

1.2.4 響應(yīng)更靈敏的用戶界面4

1.3 線程帶來的風(fēng)險(xiǎn)4

1.3.1 安全性問題5

1.3.2 活躍性問題7

1.3.3 性能問題7

1.4 線程無處不在7

第一部分 基礎(chǔ)知識

第2章 線程安全性11

2.1 什么是線程安全性13

2.2 原子性14

2.2.1 競態(tài)條件15

2.2.2 示例:延遲初始化中的競態(tài)條件16

2.2.3 復(fù)合操作17

2.3 加鎖機(jī)制18

2.3.1 內(nèi)置鎖20

2.3.2 重入21

2.4 用鎖來保護(hù)狀態(tài)22

2.5 活躍性與性能23

第3章 對象的共享27

3.1 可見性27

3.1.1 失效數(shù)據(jù)28

3.1.2 非原子的64位操作29

3.1.3 加鎖與可見性30

3.1.4 Volatile變量 30

3.2 發(fā)布與逸出32

3.3 線程封閉35

3.3.1 Ad-hoc線程封閉35

3.3.2 棧封閉36

3.3.3 ThreadLocal類37

3.4 不變性38

3.4.1 Final域39

3.4.2 示例:使用Volatile類型來發(fā)布不可變對象40

3.5 安全發(fā)布41

3.5.1 不正確的發(fā)布:正確的對象被破壞42

3.5.2  不可變對象與初始化安全性42

3.5.3 安全發(fā)布的常用模式43

3.5.4 事實(shí)不可變對象44

3.5.5 可變對象44

3.5.6 安全地共享對象44

第4章 對象的組合46

4.1 設(shè)計(jì)線程安全的類46

4.1.1 收集同步需求47

4.1.2 依賴狀態(tài)的操作48

4.1.3 狀態(tài)的所有權(quán)48

4.2 實(shí)例封閉49

4.2.1 Java監(jiān)視器模式51

4.2.2 示例:車輛追蹤51

4.3 線程安全性的委托53

4.3.1 示例:基于委托的車輛追蹤器54

4.3.2 獨(dú)立的狀態(tài)變量55

4.3.3 當(dāng)委托失效時(shí)56

4.3.4 發(fā)布底層的狀態(tài)變量57

4.3.5 示例:發(fā)布狀態(tài)的車輛追蹤器58

4.4 在現(xiàn)有的線程安全類中添加功能59

4.4.1 客戶端加鎖機(jī)制60

4.4.2 組合62

4.5 將同步策略文檔化62

第5章 基礎(chǔ)構(gòu)建模塊66

5.1 同步容器類66

5.1.1 同步容器類的問題66

5.1.2 迭代器與Concurrent-ModificationException68

5.1.3 隱藏迭代器69

5.2 并發(fā)容器70

5.2.1 ConcurrentHashMap71

5.2.2 額外的原子Map操作72

5.2.3 CopyOnWriteArrayList72

5.3 阻塞隊(duì)列和生產(chǎn)者-消費(fèi)者模式73

5.3.1 示例:桌面搜索75

5.3.2 串行線程封閉76

5.3.3 雙端隊(duì)列與工作密取77

5.4 阻塞方法與中斷方法77

5.5 同步工具類78

5.5.1 閉鎖79

5.5.2 FutureTask80

5.5.3 信號量82

5.5.4 柵欄83

5.6 構(gòu)建高效且可伸縮的結(jié)果緩存85

第二部分 結(jié)構(gòu)化并發(fā)應(yīng)用程序

第6章 任務(wù)執(zhí)行93

6.1 在線程中執(zhí)行任務(wù)93

6.1.1 串行地執(zhí)行任務(wù)94

6.1.2 顯式地為任務(wù)創(chuàng)建線程94

6.1.3 無限制創(chuàng)建線程的不足95

6.2 Executor框架96

6.2.1 示例:基于Executor的Web服務(wù)器97

6.2.2 執(zhí)行策略98

6.2.3 線程池98

6.2.4 Executor的生命周期99

6.2.5 延遲任務(wù)與周期任務(wù)101

6.3 找出可利用的并行性102

6.3.1 示例:串行的頁面渲染器102

6.3.2 攜帶結(jié)果的任務(wù)Callable與Future103

6.3.3 示例:使用Future實(shí)現(xiàn)頁面渲染器104

6.3.4 在異構(gòu)任務(wù)并行化中存在的局限106

6.3.5 CompletionService:Executor與BlockingQueue106

6.3.6 示例:使用CompletionService實(shí)現(xiàn)頁面渲染器107

6.3.7 為任務(wù)設(shè)置時(shí)限108

6.3.8 示例:旅行預(yù)定門戶網(wǎng)站109

第7章 取消與關(guān)閉111

7.1 任務(wù)取消111

7.1.1 中斷113

7.1.2 中斷策略116

7.1.3 響應(yīng)中斷117

7.1.4 示例:計(jì)時(shí)運(yùn)行118

7.1.5 通過Future來實(shí)現(xiàn)取消120

7.1.6 處理不可中斷的阻塞121

7.1.7 采用newTaskFor來封裝非標(biāo)準(zhǔn)的取消122

7.2 停止基于線程的服務(wù)124

7.2.1 示例:日志服務(wù)124

7.2.2 關(guān)閉ExecutorService127

7.2.3 “毒丸”對象128

7.2.4 示例:只執(zhí)行一次的服務(wù)129

7.2.5 shutdownNow的局限性130

7.3 處理非正常的線程終止132

7.4 JVM關(guān)閉135

7.4.1 關(guān)閉鉤子135

7.4.2 守護(hù)線程136

7.4.3 終結(jié)器136

第8章 線程池的使用138

8.1 在任務(wù)與執(zhí)行策略之間的隱性耦合138

8.1.1 線程饑餓死鎖139

8.1.2 運(yùn)行時(shí)間較長的任務(wù)140

8.2 設(shè)置線程池的大小140

8.3 配置ThreadPoolExecutor141

8.3.1 線程的創(chuàng)建與銷毀142

8.3.2 管理隊(duì)列任務(wù)142

8.3.3 飽和策略144

8.3.4 線程工廠146

8.3.5 在調(diào)用構(gòu)造函數(shù)后再定制ThreadPoolExecutor147

8.4 擴(kuò)展 ThreadPoolExecutor148

8.5 遞歸算法的并行化149

第9章 圖形用戶界面應(yīng)用程序156

9.1 為什么GUI是單線程的156

9.1.1 串行事件處理157

9.1.2 Swing中的線程封閉機(jī)制158

9.2 短時(shí)間的GUI任務(wù)160

9.3 長時(shí)間的GUI任務(wù)161

9.3.1 取消162

9.3.2 進(jìn)度標(biāo)識和完成標(biāo)識163

9.3.3 SwingWorker165

9.4 共享數(shù)據(jù)模型165

9.4.1 線程安全的數(shù)據(jù)模型166

9.4.2 分解數(shù)據(jù)模型166

9.5 其他形式的單線程子系統(tǒng)167

第三部分 活躍性、性能與測試

第10章 避免活躍性危險(xiǎn)169

10.1 死鎖169

10.1.1 鎖順序死鎖170

10.1.2 動態(tài)的鎖順序死鎖171

10.1.3 在協(xié)作對象之間發(fā)生的死鎖174

10.1.4 開放調(diào)用175

10.1.5 資源死鎖177

10.2 死鎖的避免與診斷178

10.2.1 支持定時(shí)的鎖178

10.2.2 通過線程轉(zhuǎn)儲信息來分析死鎖178

10.3 其他活躍性危險(xiǎn)180

10.3.1 饑餓180

10.3.2 糟糕的響應(yīng)性181

10.3.3 活鎖181

第11章 性能與可伸縮性183

11.1 對性能的思考183

11.1.1 性能與可伸縮性184

11.1.2 評估各種性能權(quán)衡因素185

11.2 Amdahl定律186

11.2.1 示例:在各種框架中隱藏的串行部分188

11.2.2 Amdahl定律的應(yīng)用189

11.3 線程引入的開銷189

11.3.1 上下文切換190

11.3.2 內(nèi)存同步190

11.3.3 阻塞192

11.4 減少鎖的競爭192

11.4.1 縮小鎖的范圍(“快進(jìn)快出”)193

11.4.2 減小鎖的粒度195

11.4.3 鎖分段196

11.4.4 避免熱點(diǎn)域197

11.4.5 一些替代獨(dú)占鎖的方法198

11.4.6 監(jiān)測CPU的利用率199

11.4.7 向?qū)ο蟪卣f“不”200

11.5 示例:比較Map的性能200

11.6 減少上下文切換的開銷201

第12章 并發(fā)程序的測試204

12.1 正確性測試205

12.1.1 基本的單元測試206

12.1.2 對阻塞操作的測試207

12.1.3 安全性測試208

12.1.4 資源管理的測試212

12.1.5 使用回調(diào)213

12.1.6 產(chǎn)生更多的交替操作214

12.2 性能測試215

12.2.1 在PutTakeTest中增加計(jì)時(shí)功能215

12.2.2 多種算法的比較217

12.2.3 響應(yīng)性衡量218

12.3 避免性能測試的陷阱220

12.3.1 垃圾回收220

12.3.2 動態(tài)編譯220

12.3.3 對代碼路徑的不真實(shí)采樣222

12.3.4 不真實(shí)的競爭程度222

12.3.5 無用代碼的消除223

12.4 其他的測試方法224

12.4.1 代碼審查224

12.4.2 靜態(tài)分析工具224

12.4.3 面向方面的測試技術(shù)226

12.4.4 分析與監(jiān)測工具226

第四部分 高級主題

第13章 顯式鎖227

13.1 Lock與 ReentrantLock227

13.1.1 輪詢鎖與定時(shí)鎖228

13.1.2 可中斷的鎖獲取操作230

13.1.3 非塊結(jié)構(gòu)的加鎖231

13.2 性能考慮因素231

13.3 公平性232

13.4 在synchronized和ReentrantLock之間進(jìn)行選擇234

13.5 讀-寫鎖235

第14章 構(gòu)建自定義的同步工具238

14.1 狀態(tài)依賴性的管理238

14.1.1 示例:將前提條件的失敗傳遞給調(diào)用者240

14.1.2 示例:通過輪詢與休眠來實(shí)現(xiàn)簡單的阻塞241

14.1.3 條件隊(duì)列243

14.2 使用條件隊(duì)列244

14.2.1 條件謂詞244

14.2.2 過早喚醒245

14.2.3 丟失的信號246

14.2.4 通知247

14.2.5 示例:閥門類248

14.2.6 子類的安全問題249

14.2.7 封裝條件隊(duì)列250

14.2.8 入口協(xié)議與出口協(xié)議250

14.3 顯式的Condition對象251

14.4 Synchronizer剖析253

14.5 AbstractQueuedSynchronizer254

14.6 java.util.concurrent同步器類中的 AQS257

14.6.1 ReentrantLock257

14.6.2 Semaphore與CountDownLatch258

14.6.3 FutureTask259

14.6.4 ReentrantReadWriteLock259

第15章 原子變量與非阻塞同步機(jī)制261

15.1 鎖的劣勢261

15.2 硬件對并發(fā)的支持262

15.2.1 比較并交換263

15.2.2 非阻塞的計(jì)數(shù)器264

15.2.3 JVM對CAS的支持265

15.3 原子變量類265

15.3.1 原子變量是一種“更好的volatile”266

15.3.2 性能比較:鎖與原子變量267

15.4 非阻塞算法270

15.4.1 非阻塞的棧270

15.4.2 非阻塞的鏈表272

15.4.3 原子的域更新器274

15.4.4 ABA問題275

第16章 Java內(nèi)存模型277

16.1 什么是內(nèi)存模型接谨,為什么需要它277

16.1.1 平臺的內(nèi)存模型278

16.1.2 重排序278

16.1.3 Java內(nèi)存模型簡介280

16.1.4 借助同步281

16.2 發(fā)布283

16.2.1 不安全的發(fā)布283

16.2.2 安全的發(fā)布284

16.2.3 安全初始化模式284

16.2.4 雙重檢查加鎖286

16.3 初始化過程中的安全性287

附錄A 并發(fā)性標(biāo)注289

參考文獻(xiàn)291

下載地址:http://www.ishare1.cn/archives/813.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市塘匣,隨后出現(xiàn)的幾起案子脓豪,更是在濱河造成了極大的恐慌,老刑警劉巖忌卤,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫夜,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笤闯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門堕阔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颗味,你說我怎么就攤上這事超陆。” “怎么了浦马?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵时呀,是天一觀的道長。 經(jīng)常有香客問我晶默,道長谨娜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任磺陡,我火速辦了婚禮趴梢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘币他。我一直安慰自己垢油,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布圆丹。 她就那樣靜靜地躺著滩愁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辫封。 梳的紋絲不亂的頭發(fā)上硝枉,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音倦微,去河邊找鬼妻味。 笑死,一個胖子當(dāng)著我的面吹牛欣福,可吹牛的內(nèi)容都是我干的责球。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼拓劝,長吁一口氣:“原來是場噩夢啊……” “哼雏逾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起郑临,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤栖博,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厢洞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇让,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡典奉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丧叽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卫玖。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖踊淳,靈堂內(nèi)的尸體忽然破棺而出假瞬,到底是詐尸還是另有隱情,我是刑警寧澤嚣崭,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布笨触,位于F島的核電站,受9級特大地震影響雹舀,放射性物質(zhì)發(fā)生泄漏芦劣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一说榆、第九天 我趴在偏房一處隱蔽的房頂上張望虚吟。 院中可真熱鬧,春花似錦签财、人聲如沸串慰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邦鲫。三九已至,卻和暖如春神汹,著一層夾襖步出監(jiān)牢的瞬間庆捺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工屁魏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滔以,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓氓拼,卻偏偏與公主長得像你画,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子桃漾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容