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

深入理解高并發(fā)編程:核心原理與案例實(shí)戰(zhàn)

深入理解高并發(fā)編程:核心原理與案例實(shí)戰(zhàn)

定 價(jià):¥129.00

作 者: 冰河 著
出版社: 電子工業(yè)出版社
叢編項(xiàng): 冰河技術(shù)叢書(shū)
標(biāo) 簽: 暫缺

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


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

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

  本書(shū)從實(shí)際需求出發(fā),全面細(xì)致地介紹了高并發(fā)編程的基礎(chǔ)知識(shí)、核心原理、實(shí)戰(zhàn)案例和系統(tǒng)架構(gòu)等內(nèi)容。通過(guò)閱讀和學(xué)習(xí)本書(shū),讀者可以對(duì)高并發(fā)編程有更加全面、深入、透徹的理解,提高對(duì)高并發(fā)編程問(wèn)題的處理能力和項(xiàng)目實(shí)戰(zhàn)能力,并站在更高的層面解決高并發(fā)編程系統(tǒng)架構(gòu)問(wèn)題。

作者簡(jiǎn)介

  冰河,互聯(lián)網(wǎng)資深技術(shù)專家、MySQL 技術(shù)專家、分布式與微服務(wù)架構(gòu)專家。 多年來(lái)一直致力于分布式系統(tǒng)架構(gòu)、微服務(wù)、分布式數(shù)據(jù)庫(kù)、分布式事務(wù)與大數(shù)據(jù)技術(shù)的研究,在高并發(fā)、高可用、高可擴(kuò)展性、高可維護(hù)性和大數(shù)據(jù)等領(lǐng)域擁有豐富的架構(gòu)經(jīng)驗(yàn)。 可視化多數(shù)據(jù)源數(shù)據(jù)異構(gòu)中間件 mykit-data 作者,暢銷書(shū)《深入理解分布式事務(wù):原理與實(shí)戰(zhàn)》《海量數(shù)據(jù)處理與大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)》和《MySQL 技術(shù)大全:開(kāi)發(fā)、優(yōu)化與運(yùn)維實(shí)戰(zhàn)》作者,“冰河技術(shù)”微信公眾號(hào)作者。

圖書(shū)目錄

第1篇 基礎(chǔ)知識(shí)
第1章 操作系統(tǒng)線程調(diào)度 2
1.1 馮·諾依曼體系結(jié)構(gòu) 2
1.1.1 概述 2
1.1.2 計(jì)算機(jī)五大組成部分 3
1.2 CPU架構(gòu) 5
1.2.1 CPU的組成部分 5
1.2.2 CPU邏輯結(jié)構(gòu) 6
1.2.3 單核CPU的不足 8
1.2.4 多核CPU架構(gòu) 8
1.2.5 多CPU架構(gòu) 10
1.3 操作系統(tǒng)線程 11
1.3.1 用戶級(jí)線程 11
1.3.2 內(nèi)核級(jí)線程 12
1.3.3 混合級(jí)線程 14
1.4 Java線程與操作系統(tǒng)線程的關(guān)系 15
1.5 本章總結(jié) 16
第2章 并發(fā)編程概述 17
2.1 并發(fā)編程的基本概念 17
2.1.1 程序 17
2.1.2 進(jìn)程與線程 17
2.1.3 線程組 18
2.1.4 用戶線程與守護(hù)線程 19
2.1.5 并行與并發(fā) 20
2.1.6 同步與異步 21
2.1.7 共享與獨(dú)享 21
2.1.8 臨界區(qū) 22
2.1.9 阻塞和非阻塞 22
2.2 并發(fā)編程的風(fēng)險(xiǎn) 22
2.2.1 安全性問(wèn)題 22
2.2.2 活躍性問(wèn)題 23
2.2.3 性能問(wèn)題 24
2.3 并發(fā)編程中的鎖 24
2.3.1 悲觀鎖與樂(lè)觀鎖 24
2.3.2 公平鎖與非公平鎖 25
2.3.3 獨(dú)占鎖與共享鎖 26
2.3.4 可重入鎖與不可重入鎖 26
2.3.5 可中斷鎖與不可中斷鎖 26
2.3.6 讀/寫(xiě)鎖 27
2.3.7 自旋鎖 27
2.3.8 死鎖、饑餓與活鎖 27
2.4 本章總結(jié) 28
第2篇 核心原理
第3章 并發(fā)編程的三大核心問(wèn)題 30
3.1 分工問(wèn)題 30
3.1.1 類比現(xiàn)實(shí)案例 30
3.1.2 并發(fā)編程中的分工 32
3.2 同步問(wèn)題 32
3.2.1 類比現(xiàn)實(shí)案例 33
3.2.2 并發(fā)編程中的同步 33
3.3 互斥問(wèn)題 35
3.3.1 類比現(xiàn)實(shí)案例 35
3.3.2 并發(fā)編程中的互斥 35
3.4 本章總結(jié) 36
第4章 并發(fā)編程的本質(zhì)問(wèn)題 37
4.1 計(jì)算機(jī)的核心矛盾 37
4.1.1 核心矛盾概述 37
4.1.2 CPU如何解決核心矛盾 38
4.1.3 操作系統(tǒng)如何解決核心矛盾 38
4.1.4 編譯程序如何解決核心矛盾 38
4.1.5 引發(fā)的問(wèn)題 39
4.2 原子性 39
4.2.1 原子性概述 39
4.2.2 原子性問(wèn)題 41
4.2.3 Java中的原子性問(wèn)題 42
4.2.4 原子性問(wèn)題總結(jié) 46
4.3 可見(jiàn)性 46
4.3.1 可見(jiàn)性概述 46
4.3.2 可見(jiàn)性問(wèn)題 47
4.3.3 Java中的可見(jiàn)性問(wèn)題 49
4.3.4 可見(jiàn)性問(wèn)題總結(jié) 51
4.4 有序性 51
4.4.1 有序性概述 51
4.4.2 有序性問(wèn)題 52
4.4.3 Java中的有序性問(wèn)題 53
4.4.4 有序性問(wèn)題總結(jié) 56
4.5 解決方案 57
4.5.1 原子性問(wèn)題解決方案 57
4.5.2 可見(jiàn)性與有序性問(wèn)題解決方案 57
4.6 本章總結(jié) 58
第5章 原子性的核心原理 59
5.1 原子性原理 59
5.2 處理器保證原子性 60
5.2.1 CPU保證基本內(nèi)存操作的原子性 60
5.2.2 總線鎖保證原子性 60
5.2.3 緩存鎖保證原子性 62
5.3 互斥鎖保證原子性 62
5.3.1 互斥鎖模型 62
5.3.2 優(yōu)化后的互斥鎖模型 63
5.4 CAS保證原子性 64
5.5 本章總結(jié) 64
第6章 可見(jiàn)性與有序性核心原理 65
6.1 CPU多級(jí)緩存架構(gòu) 65
6.1.1 CPU為何使用多級(jí)緩存架構(gòu) 65
6.1.2 CPU多級(jí)緩存架構(gòu)原理 66
6.1.3 CPU的計(jì)算流程 67
6.2 緩存一致性 68
6.2.1 什么是緩存一致性 68
6.2.2 緩存一致性協(xié)議 69
6.2.3 MESI協(xié)議緩存狀態(tài) 70
6.2.4 MESI協(xié)議的狀態(tài)轉(zhuǎn)換 70
6.2.5 MESI協(xié)議帶來(lái)的問(wèn)題 76
6.3 偽共享 76
6.3.1 偽共享的概念 76
6.3.2 偽共享產(chǎn)生的場(chǎng)景 77
6.3.3 如何解決偽共享問(wèn)題 77
6.4 volatile核心原理 78
6.4.1 保證可見(jiàn)性核心原理 78
6.4.2 保證有序性核心原理 79
6.4.3 volatile的局限性 81
6.5 內(nèi)存屏障 82
6.5.1 編譯器重排序 82
6.5.2 CPU重排序 83
6.5.3 as-if-serial原則 83
6.5.4 計(jì)算機(jī)硬件實(shí)現(xiàn)的內(nèi)存屏障 84
6.6 Java內(nèi)存模型 84
6.6.1 Java內(nèi)存模型的概念 85
6.6.2 Java內(nèi)存模型的八大操作 85
6.6.3 Java內(nèi)存模型解決可見(jiàn)性與有序性問(wèn)題 87
6.7 Happens-Before原則 90
6.7.1 Happens-Before原則概述 90
6.7.2 程序次序原則 90
6.7.3 volatile變量原則 91
6.7.4 傳遞原則 91
6.7.5 鎖定原則 91
6.7.6 線程啟動(dòng)原則 92
6.7.7 線程終結(jié)原則 93
6.7.8 線程中斷原則 93
6.7.9 對(duì)象終結(jié)原則 94
6.8 本章總結(jié) 95
第7章 synchronized核心原理 96
7.1 synchronized用法 96
7.1.1 同步實(shí)例方法 97
7.1.2 同步靜態(tài)方法 98
7.1.3 同步代碼塊 99
7.2 Java對(duì)象結(jié)構(gòu) 102
7.2.1 對(duì)象結(jié)構(gòu)總覽 102
7.2.2 對(duì)象頭 103
7.2.3 實(shí)例數(shù)據(jù) 103
7.2.4 對(duì)齊填充 103
7.3 Java對(duì)象頭 104
7.3.1 Mark Word 104
7.3.2 類型指針 106
7.3.3 數(shù)組長(zhǎng)度 106
7.4 使用JOL查看對(duì)象信息 107
7.4.1 引入JOL環(huán)境依賴 107
7.4.2 打印對(duì)象信息 107
7.4.3 打印對(duì)象鎖狀態(tài) 109
7.5 synchronized核心原理 115
7.5.1 synchronized底層原理 115
7.5.2 Monitor鎖原理 116
7.5.3 反編譯synchronized方法 118
7.5.4 反編譯synchronized代碼塊 119
7.6 偏向鎖 121
7.6.1 偏向鎖核心原理 122
7.6.2 偏向鎖的撤銷 122
7.6.3 偏向鎖案例 123
7.7 輕量級(jí)鎖 124
7.7.1 輕量級(jí)鎖核心原理 124
7.7.2 輕量級(jí)鎖案例 126
7.8 重量級(jí)鎖 127
7.8.1 重量級(jí)鎖核心原理 127
7.8.2 重量級(jí)鎖案例 127
7.9 鎖升級(jí)的過(guò)程 129
7.10 鎖消除 130
7.11 本章總結(jié) 131
第8章 AQS核心原理 132
8.1 AQS核心數(shù)據(jù)結(jié)構(gòu) 132
8.1.1 AQS數(shù)據(jù)結(jié)構(gòu)原理 132
8.1.2 AQS內(nèi)部隊(duì)列模式 133
8.2 AQS底層鎖的支持 134
8.2.1 核心狀態(tài)位 134
8.2.2 核心節(jié)點(diǎn)類 135
8.2.3 獨(dú)占鎖模式 137
8.2.4 共享鎖模式 142
8.3 本章總結(jié) 145
第9章 Lock鎖核心原理 146
9.1 顯示鎖原理 146
9.2 公平鎖與非公平鎖原理 148
9.2.1 公平鎖原理 148
9.2.2 ReentrantLock中的公平鎖 149
9.2.3 公平鎖實(shí)戰(zhàn) 153
9.2.4 非公平鎖原理 154
9.2.5 ReentrantLock中的非公平鎖 156
9.2.6 非公平鎖實(shí)戰(zhàn) 159
9.3 悲觀鎖與樂(lè)觀鎖原理 159
9.3.1 悲觀鎖原理 160
9.3.2 悲觀鎖實(shí)戰(zhàn) 160
9.3.3 樂(lè)觀鎖原理 162
9.3.4 樂(lè)觀鎖實(shí)戰(zhàn) 162
9.4 可中斷鎖與不可中斷鎖原理 163
9.4.1 可中斷鎖原理 163
9.4.2 可中斷鎖實(shí)戰(zhàn) 164
9.4.3 不可中斷鎖原理 166
9.4.4 不可中斷鎖實(shí)戰(zhàn) 166
9.5 排他鎖與共享鎖原理 167
9.5.1 排他鎖原理 167
9.5.2 排他鎖實(shí)戰(zhàn) 167
9.5.3 共享鎖原理 169
9.5.4 共享鎖實(shí)戰(zhàn) 169
9.6 可重入鎖原理 170
9.6.1 可重入鎖原理 170
9.6.2 可重入鎖實(shí)戰(zhàn) 172
9.7 讀/寫(xiě)鎖原理 175
9.7.1 讀/寫(xiě)鎖原理 175
9.7.2 ReadWriteLock讀/寫(xiě)鎖 176
9.7.3 ReadWriteLock鎖降級(jí) 177
9.7.4 StampedLock讀/寫(xiě)鎖 178
9.7.5 StampedLock鎖的升級(jí)與降級(jí) 179
9.7.6 讀/寫(xiě)鎖實(shí)戰(zhàn) 182
9.8 LockSupport原理 185
9.8.1 LockSupport原理 185
9.8.2 LockSupport實(shí)戰(zhàn) 185
9.9 本章總結(jié) 187
第10章 CAS核心原理 188
10.1 CAS的基本概念 188
10.2 CAS的核心類Unsafe 189
10.2.1 Unsafe類的核心方法 190
10.2.2 Unsafe類實(shí)戰(zhàn) 192
10.3 使用CAS實(shí)現(xiàn)count 194
10.3.1 案例分析 194
10.3.2 程序?qū)崿F(xiàn) 194
10.3.3 測(cè)試程序 198
10.4 ABA問(wèn)題 199
10.4.1 ABA問(wèn)題概述 199
10.4.2 ABA問(wèn)題解決方案 200
10.4.3 Java如何解決ABA問(wèn)題 200
10.5 本章總結(jié) 202
第11章 死鎖的核心原理 203
11.1 死鎖的基本概念 203
11.2 死鎖的分析 204
11.2.1 線程不安全 204
11.2.2 串行執(zhí)行 206
11.2.3 發(fā)生死鎖 208
11.3 形成死鎖的必要條件 210
11.4 死鎖的預(yù)防 210
11.5 本章總結(jié) 216
第12章 鎖優(yōu)化 217
12.1 縮小鎖的范圍 217
12.2 減小鎖的粒度 219
12.3 鎖分離 220
12.4 鎖分段 221
12.5 鎖粗化 221
12.6 避免熱點(diǎn)區(qū)域問(wèn)題 222
12.7 獨(dú)占鎖的替換方案 223
12.8 其他優(yōu)化方案 223
12.9 本章總結(jié) 223
第13章 線程池核心原理 224
13.1 線程池的核心狀態(tài) 224
13.1.1 核心狀態(tài)說(shuō)明 224
13.1.2 核心狀態(tài)的流轉(zhuǎn)過(guò)程 225
13.2 線程池的創(chuàng)建方式 227
13.2.1 通過(guò)Executors類創(chuàng)建線程池 227
13.2.2 通過(guò)ThreadPoolExecutor類創(chuàng)建線程池 229
13.2.3 通過(guò)ForkJoinPool類創(chuàng)建線程池 232
13.2.4 通過(guò)ScheduledThreadPoolExecutor類創(chuàng)建線程池 234
13.3 線程池執(zhí)行任務(wù)的核心流程 235
13.3.1 執(zhí)行任務(wù)的流程 235
13.3.2 拒絕策略 237
13.4 線程池的關(guān)閉方式 238
13.4.1 shutdown()方法 238
13.4.2 shutdownNow()方法 238
13.5 如何確定線程數(shù) 238
13.5.1 CPU密集型程序 238
13.5.2 I/O密集型程序 239
13.6 本章總結(jié) 239
第14章 ThreadLocal核心原理 240
14.1 ThreadLocal的基本概念 240
14.2 ThreadLocal的使用案例 241
14.3 ThreadLocal的核心原理 244
14.3.1 Thread類源碼 244
14.3.2 set()方法 244
14.3.3 get()方法 245
14.3.4 remove()方法 247
14.4 ThreadLocal變量的不繼承性 247
14.5 InheritableThreadLocal的使用案例 249
14.6 InheritableThreadLocal的核心原理 250
14.7 本章總結(jié) 253

本目錄推薦

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