注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)圖解Java并發(fā)編程

圖解Java并發(fā)編程

圖解Java并發(fā)編程

定 價(jià):¥109.90

作 者: 汪建 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115561732 出版時(shí)間: 2021-10-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 374 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《圖解Java并發(fā)編程》采用圖文并茂外加大量案例代碼的方式講解了Java并發(fā)編程機(jī)制的運(yùn)行原理?!秷D解Java并發(fā)編程》分為12章,內(nèi)容涵蓋了線(xiàn)程機(jī)制、線(xiàn)程I/O模型、Java內(nèi)存模型、并發(fā)知識(shí)、AQS同步器、常見(jiàn)的同步器、原子類(lèi)、阻塞隊(duì)列、鎖、任務(wù)執(zhí)行器、其他并發(fā)工具等內(nèi)容。此外,還在最后一章介紹了如何使用C++來(lái)模擬實(shí)現(xiàn)Java線(xiàn)程。《圖解Java并發(fā)編程》適合Java中高級(jí)開(kāi)發(fā)人員、對(duì)Java并發(fā)編程機(jī)制感興趣的人員以及Java架構(gòu)師閱讀。

作者簡(jiǎn)介

  汪建,筆名 seaboat,畢業(yè)于廣東工業(yè)大學(xué)光信息科學(xué)與技術(shù)專(zhuān)業(yè),畢業(yè)后從事各類(lèi)業(yè)務(wù)系統(tǒng)、中間件、基礎(chǔ)架構(gòu)、人工智能系統(tǒng)等研發(fā)工作,目前致力于用AI提升企業(yè)業(yè)務(wù)系統(tǒng)效率以節(jié)約人力成本。擅長(zhǎng)工程算法、人工智能算法、自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、架構(gòu)、分布式、高并發(fā)、大數(shù)據(jù)、搜索引擎等方面的技術(shù),會(huì)使用大多數(shù)編程語(yǔ)言,更擅長(zhǎng)Java、Python和C++。平時(shí)喜歡看書(shū)、運(yùn)動(dòng)、寫(xiě)作、編程、繪畫(huà)。崇尚開(kāi)源,崇尚技術(shù)自由。已出版的圖書(shū)有《圖解數(shù)據(jù)結(jié)構(gòu)與算法》《Tomcat內(nèi)核設(shè)計(jì)剖析》。個(gè)人博客:blog.csdn.net/wangyangzhizhou。

圖書(shū)目錄

第 1章 線(xiàn)程機(jī)制 1
1.1 線(xiàn)程是什么 1
1.2 線(xiàn)程的映射 3
1.2.1 多對(duì)一映射 4
1.2.2 一對(duì)一映射 4
1.2.3 多對(duì)多映射 5
1.2.4 Java層到內(nèi)核層 6
1.3 Java線(xiàn)程的狀態(tài) 7
1.4 Java線(xiàn)程的調(diào)度 10
1.5 Java線(xiàn)程的優(yōu)先級(jí)與執(zhí)行機(jī)制 11
1.6 Java線(xiàn)程的CPU時(shí)間 14
1.7 Java線(xiàn)程的yield操作 15
1.8 Java線(xiàn)程的sleep操作 17
1.9 Java線(xiàn)程的Interrupt操作 20
1.9.1 可運(yùn)行狀態(tài)的中斷 23
1.9.2 阻塞/等待狀態(tài)的中斷 23
1.9.3 經(jīng)典中斷實(shí)現(xiàn)方式 24
1.9.4 park的特殊中斷 26
1.10 Java線(xiàn)程的阻塞與喚醒 26
1.11 Java線(xiàn)程的join操作 34
第 2章 線(xiàn)程I/O模型 38
2.1 線(xiàn)程與阻塞I/O 38
2.1.1 單線(xiàn)程阻塞I/O模型 39
2.1.2 多線(xiàn)程阻塞I/O模型 40
2.2 線(xiàn)程與非阻塞I/O模型 41
2.2.1 應(yīng)用層I/O多路復(fù)用 43
2.2.2 內(nèi)核I/O多路復(fù)用 43
2.2.3 內(nèi)核回調(diào)事件驅(qū)動(dòng)I/O 44
2.3 Java多線(xiàn)程非阻塞I/O模型 46
2.4 多線(xiàn)程帶來(lái)了什么 48
2.4.1 提升執(zhí)行效率 49
2.4.2 提升用戶(hù)體驗(yàn) 50
2.4.3 讓編碼更難 50
2.4.4 資源開(kāi)銷(xiāo)與上下文切換開(kāi)銷(xiāo) 51
第3章 Java內(nèi)存模型 53
3.1 計(jì)算機(jī)的運(yùn)行 53
3.2 Java內(nèi)存模型 56
3.3 volatile能否保證線(xiàn)程安全 59
3.4 happens-before原則 62
3.4.1 單線(xiàn)程原則 65
3.4.2 鎖原則 66
3.4.3 volatile原則 67
3.4.4 線(xiàn)程start原則 67
3.4.5 線(xiàn)程join原則 68
3.4.6 線(xiàn)程interrupt原則 68
3.4.7 finalize原則 69
3.4.8 傳遞原則 70
3.5 Java指令重排 70
第4章 并發(fā)知識(shí) 75
4.1 synchronized互斥鎖 75
4.1.1 作用在對(duì)象方法上 76
4.1.2 作用在類(lèi)靜態(tài)方法上 79
4.1.3 作用在對(duì)象方法里面 80
4.1.4 作用在類(lèi)靜態(tài)方法里面 81
4.2 樂(lè)觀的并發(fā)策略 85
4.3 自旋鎖 87
4.3.1 UMA架構(gòu)與NUMA架構(gòu) 88
4.3.2 原始自旋鎖 90
4.3.3 排隊(duì)自旋鎖 91
4.3.4 CLH鎖 93
4.3.5 MCS鎖 95
4.4 線(xiàn)程饑餓 97
4.4.1 synchronized饑餓 97
4.4.2 優(yōu)先級(jí)饑餓 99
4.4.3 線(xiàn)程自旋饑餓 100
4.4.4 等待喚醒饑餓 101
4.4.5 公平性解決饑餓 102
4.5 數(shù)據(jù)競(jìng)爭(zhēng) 104
4.6 競(jìng)爭(zhēng)條件 108
4.6.1 線(xiàn)程執(zhí)行順序的不確定性 110
4.6.2 并發(fā)機(jī)制 111
4.7 死鎖 113
4.7.1 鎖的順序化 116
4.7.2 資源合并 116
4.7.3 避免鎖嵌套 117
4.7.4 鎖超時(shí)機(jī)制 117
4.7.5 搶占資源機(jī)制 118
4.7.6 撤銷(xiāo)線(xiàn)程機(jī)制 118
4.7.7 死鎖的檢測(cè) 119
第5章 AQS同步器 120
5.1 什么是AQS同步器 120
5.2 AQS的等待隊(duì)列與狀態(tài)轉(zhuǎn)換 120
5.3 AQS的獨(dú)占鎖與共享鎖 125
5.4 AQS獨(dú)占鎖獲取與釋放 127
5.4.1 獲取獨(dú)占鎖的邏輯 128
5.4.2 嘗試獲取獨(dú)占鎖 130
5.4.3 入隊(duì)操作邏輯 130
5.4.4 入隊(duì)后的操作 132
5.4.5 虛節(jié)點(diǎn)可能消失 133
5.4.6 取消鎖獲取操作 134
5.4.7 喚醒后繼節(jié)點(diǎn) 136
5.4.8 釋放獨(dú)占鎖的邏輯 137
5.5 AQS共享鎖獲取與釋放 138
5.5.1 獲取共享鎖的邏輯 138
5.5.2 入隊(duì)操作 140
5.5.3 入隊(duì)后的操作 140
5.5.4 引入PROPAGATE狀態(tài) 143
5.5.5 釋放共享鎖的邏輯 146
5.6 AQS的阻塞與喚醒 146
5.6.1 許可機(jī)制 148
5.6.2 LockSupport示例 149
5.6.3 park與unpark的順序 150
5.6.4 park對(duì)中斷的響應(yīng) 151
5.6.5 park是否會(huì)釋放鎖 152
5.6.6 LockSupport的實(shí)現(xiàn) 154
5.7 AQS的中斷機(jī)制 156
5.7.1 synchronized不支持中斷 157
5.7.2 AQS獨(dú)占模式的中斷 158
5.7.3 AQS共享模式的中斷 160
5.8 AQS的超時(shí)機(jī)制 161
5.8.1 synchronized不支持超時(shí) 161
5.8.2 AQS獨(dú)占模式的超時(shí) 162
5.8.3 AQS共享模式的超時(shí) 163
5.9 AQS的原子性如何保證 164
5.10 AQS的自旋鎖 175
5.11 AQS的公平性 177
5.12 AQS的條件隊(duì)列 179
5.12.1 await方法 179
5.12.2 signal方法 182
5.13 AQS自定義同步器 183
5.13.1 AQS設(shè)計(jì)思想 183
5.13.2 獨(dú)占模式 184
5.13.3 共享模式 186
第6章 常見(jiàn)的同步器 189
6.1 常見(jiàn)的同步器 189
6.2 閉鎖 192
6.3 信號(hào)量 197
6.3.1 非公平模式的實(shí)現(xiàn) 198
6.3.2 公平模式的實(shí)現(xiàn) 201
6.3.3 信號(hào)量的使用示例 202
6.4 循環(huán)屏障 204
6.5 相位器 210
6.5.1 相位器的主要概念及方法 211
6.5.2 相位器的3個(gè)例子 212
6.5.3 相位器的狀態(tài)示意圖 215
6.5.4 相位器的實(shí)現(xiàn)原理 216
6.6 交換器 220
6.6.1 交換器的實(shí)現(xiàn)原理 223
6.6.2 交換器的單槽模式 226
6.6.3 交換器的多槽模式 228
第7章 原子類(lèi) 233
7.1 原子整型 233
7.1.1 一行代碼等于原子性嗎 233
7.1.2 volatile能保證原子性嗎 234
7.1.3 synchronized能解決問(wèn)題嗎 235
7.1.4 AtomicInteger 237
7.1.5 實(shí)現(xiàn)原理 238
7.2 原子引用 239
7.3 原子數(shù)組 243
7.3.1 AtomicIntegerArray 244
7.3.2 AtomicLongArray 247
7.3.3 AtomicReferenceArray 248
7.4 原子變量更新器 249
第8章 阻塞隊(duì)列 254
8.1 阻塞隊(duì)列概述 254
8.2 數(shù)組阻塞隊(duì)列 258
8.3 鏈表阻塞隊(duì)列 263
8.4 優(yōu)先級(jí)阻塞隊(duì)列 271
8.5 延遲阻塞隊(duì)列 279
8.5.1 優(yōu)先級(jí)隊(duì)列 281
8.5.2 DelayQueue的阻塞與喚醒 283
8.5.3 DelayQueue的實(shí)現(xiàn)原理 284
8.6 鏈表阻塞的雙向隊(duì)列 288
第9章 鎖 298
9.1 可重入鎖 298
9.1.1 非公平模式的實(shí)現(xiàn) 299
9.1.2 公平模式的實(shí)現(xiàn) 301
9.1.3 公平模式的3個(gè)示例 302
9.2 讀寫(xiě)鎖 305
9.2.1 讀寫(xiě)鎖的性質(zhì) 306
9.2.2 簡(jiǎn)單的實(shí)現(xiàn)版本 307
9.2.3 讀寫(xiě)鎖的升級(jí)與降級(jí) 308
9.2.4 讀寫(xiě)鎖的實(shí)現(xiàn)思想 309
9.2.5 讀寫(xiě)鎖的共用狀態(tài)變量 312
9.2.6 讀寫(xiě)鎖的公平/非公平模式 313
9.2.7 寫(xiě)鎖的實(shí)現(xiàn) 314
9.2.8 讀鎖的實(shí)現(xiàn) 315
9.2.9 讀寫(xiě)鎖的使用示例 317
9.3 鎖的條件機(jī)制 318
9.3.1 wait/notify模式 318
9.3.2 Condition 320
第 10章 任務(wù)執(zhí)行器 322
10.1 任務(wù)執(zhí)行器接口 322
10.1.1 同步執(zhí)行器 322
10.1.2 一對(duì)一執(zhí)行器 323
10.1.3 線(xiàn)程池執(zhí)行器 323
10.1.4 串行執(zhí)行器 325
10.2 任務(wù)執(zhí)行器的ExecutorService接口 326
10.3 線(xiàn)程池任務(wù)執(zhí)行器 331
10.3.1 線(xiàn)程池任務(wù)執(zhí)行器的運(yùn)行狀態(tài) 332
10.3.2 線(xiàn)程池任務(wù)執(zhí)行器的使用示例 334
10.3.3 線(xiàn)程池任務(wù)執(zhí)行器的實(shí)現(xiàn)原理 335
第 11章 其他并發(fā)工具 344
11.1 線(xiàn)程本地變量 344
11.1.1 線(xiàn)程本地變量的使用示例 344
11.1.2 線(xiàn)程本地變量的3個(gè)主要方法 346
11.1.3 JDK中線(xiàn)程本地變量的實(shí)現(xiàn)思想 347
11.1.4 JDK中線(xiàn)程本地變量的實(shí)現(xiàn)源碼 348
11.1.5 線(xiàn)程本地變量的內(nèi)存泄漏 352
11.2 寫(xiě)時(shí)復(fù)制數(shù)組列表 353
第 12章 C++模擬實(shí)現(xiàn)Java線(xiàn)程 359
12.1 模擬實(shí)現(xiàn)Java線(xiàn)程 359
12.2 模擬實(shí)現(xiàn)yield語(yǔ)義 365
12.3 模擬實(shí)現(xiàn)sleep操作 367
12.4 模擬實(shí)現(xiàn)synchronized語(yǔ)義 369
12.5 模擬實(shí)現(xiàn)Interrupt操作 372

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)