注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)JAVA及其相關(guān)Java高并發(fā)核心編程 卷2:多線(xiàn)程、鎖、JMM、JUC、高并發(fā)設(shè)計(jì)模式(加強(qiáng)版)

Java高并發(fā)核心編程 卷2:多線(xiàn)程、鎖、JMM、JUC、高并發(fā)設(shè)計(jì)模式(加強(qiáng)版)

Java高并發(fā)核心編程 卷2:多線(xiàn)程、鎖、JMM、JUC、高并發(fā)設(shè)計(jì)模式(加強(qiáng)版)

定 價(jià):¥118.00

作 者: 尼恩
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

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


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

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

  本書(shū)聚焦Java高并發(fā)編程基礎(chǔ)知識(shí),介紹Java多線(xiàn)程、線(xiàn)程池、內(nèi)置鎖、JMM、CAS、JUC、高并發(fā)設(shè)計(jì)模式等并發(fā)編程方面的核心原理和實(shí)戰(zhàn)知識(shí)。本書(shū)共10章。第1、2章剖析多線(xiàn)程、線(xiàn)程池的核心原理和實(shí)戰(zhàn)應(yīng)用,揭秘線(xiàn)程安全問(wèn)題和Java內(nèi)置鎖的核心原理。第3、4章講解CAS原理與JUC原子類(lèi)、JMM的核心原理,揭秘CAS操作的弊端和兩類(lèi)規(guī)避措施,以及Java內(nèi)存可見(jiàn)性和volatile關(guān)鍵字的底層知識(shí)。第5章講解JUC顯式鎖的原理和各種顯式鎖的使用。第6章闡述JUC高并發(fā)的基礎(chǔ)設(shè)施——AQS抽象同步器的核心原理。第7章介紹JUC容器類(lèi)。第8~10章介紹常見(jiàn)的Java高并發(fā)設(shè)計(jì)模式的原理和使用。本書(shū)既可以作為Java工程師、架構(gòu)師的編程參考書(shū),又可以作為參加互聯(lián)網(wǎng)大廠(chǎng)面試、筆試的人員的學(xué)習(xí)參考書(shū)。

作者簡(jiǎn)介

  尼恩中南大學(xué)碩士,資深系統(tǒng)架構(gòu)師、IT領(lǐng)域資深作家、著名博主、從業(yè)十余年,先后在華為、神州數(shù)碼等公司從事技術(shù)研發(fā)、架構(gòu)工作。長(zhǎng)期專(zhuān)注于高性能Web平臺(tái)、高性能通信、高性能搜索、數(shù)據(jù)挖掘等領(lǐng)域的3高架構(gòu)研究、架構(gòu)實(shí)操、核心代碼開(kāi)發(fā)工作,以及核心中間件、底層源碼研究工作,負(fù)責(zé)過(guò)多個(gè)億級(jí)RMB智慧城市平臺(tái)、大型政務(wù)平臺(tái)、數(shù)據(jù)中臺(tái)架構(gòu)、技術(shù)中臺(tái)架構(gòu)工作,發(fā)起的3高研究社群“瘋狂創(chuàng)客圈”目前有研究人員1100多人。唐歡計(jì)算機(jī)專(zhuān)業(yè)碩士,資深系統(tǒng)架構(gòu)師、資深博主,擁有多年Java開(kāi)發(fā)和系統(tǒng)架構(gòu)經(jīng)驗(yàn),多年敏捷開(kāi)發(fā)的項(xiàng)目管理經(jīng)驗(yàn),現(xiàn)在國(guó)內(nèi)科技企業(yè)擔(dān)任系統(tǒng)架構(gòu)師一職,主持企業(yè)軟件的系統(tǒng)架構(gòu)和產(chǎn)品研發(fā)工作。孫精科南京理工大學(xué)計(jì)算機(jī)專(zhuān)業(yè)碩士,上海交通大學(xué)EMBA。行業(yè)內(nèi)知名信息化系統(tǒng)專(zhuān)家,具有豐富的大型信息系統(tǒng)的研發(fā)及管理經(jīng)驗(yàn)。近10年來(lái),主持上市公司信息系統(tǒng)建設(shè)、三維開(kāi)發(fā)、通信協(xié)議轉(zhuǎn)換、數(shù)據(jù)采集、軟硬件一體化產(chǎn)品的研發(fā)。具有豐富的國(guó)際國(guó)內(nèi)項(xiàng)目咨詢(xún)經(jīng)驗(yàn),擔(dān)任多項(xiàng)省級(jí)項(xiàng)目負(fù)責(zé)人,主持的多個(gè)項(xiàng)目獲得省部級(jí)獎(jiǎng)項(xiàng);2003—2008年,在東南亞、中東、非洲、南美等地執(zhí)行國(guó)際咨詢(xún)項(xiàng)目。朱達(dá)華資深技術(shù)總監(jiān)、美國(guó)協(xié)會(huì)PMI項(xiàng)目管理師、敏捷教練。近10年來(lái)在一線(xiàn)主持技術(shù)管理工作,擅長(zhǎng)系統(tǒng)架構(gòu)分析和設(shè)計(jì),負(fù)責(zé)過(guò)多個(gè)大型省市級(jí)系統(tǒng)建設(shè),服務(wù)數(shù)千萬(wàn)的用戶(hù)。

圖書(shū)目錄


第1章  多線(xiàn)程原理與實(shí)戰(zhàn) 1
1.1  兩個(gè)技術(shù)面試故事 1
1.2  無(wú)處不在的進(jìn)程和線(xiàn)程 2
1.2.1  進(jìn)程的基本原理 3
1.2.2  線(xiàn)程的基本原理 4
1.2.3  進(jìn)程與線(xiàn)程的區(qū)別 7
1.3  創(chuàng)建線(xiàn)程的4種方法 7
1.3.1  Thread類(lèi)詳解 8
1.3.2  創(chuàng)建一個(gè)空線(xiàn)程 10
1.3.3  線(xiàn)程創(chuàng)建方法一:繼承Thread類(lèi)創(chuàng)建線(xiàn)程類(lèi) 11
1.3.4  線(xiàn)程創(chuàng)建方法二:實(shí)現(xiàn)Runnable接口創(chuàng)建線(xiàn)程目標(biāo)類(lèi) 12
1.3.5  優(yōu)雅創(chuàng)建Runnable線(xiàn)程目標(biāo)類(lèi)的兩種方式 14
1.3.6  實(shí)現(xiàn)Runnable接口的方式創(chuàng)建線(xiàn)程目標(biāo)類(lèi)的優(yōu)缺點(diǎn) 16
1.3.7  線(xiàn)程創(chuàng)建方法三:使用Callable和FutureTask創(chuàng)建線(xiàn)程 20
1.3.8  線(xiàn)程創(chuàng)建方法四:通過(guò)線(xiàn)程池創(chuàng)建線(xiàn)程 25
1.4  線(xiàn)程的核心原理 28
1.4.1  線(xiàn)程的調(diào)度與時(shí)間片 28
1.4.2  線(xiàn)程的優(yōu)先級(jí) 29
1.4.3  線(xiàn)程的生命周期 31
1.4.4  一個(gè)線(xiàn)程狀態(tài)的簡(jiǎn)單演示案例 33
1.4.5  使用Jstack工具查看線(xiàn)程狀態(tài) 35
1.5  線(xiàn)程的基本操作 36
1.5.1  線(xiàn)程名稱(chēng)的設(shè)置和獲取 36
1.5.2  線(xiàn)程的sleep操作 38
1.5.3  線(xiàn)程的interrupt操作 39
1.5.4  線(xiàn)程的join操作 42
1.5.5  線(xiàn)程的yield操作 46
1.5.6  線(xiàn)程的daemon操作 48
1.5.7  線(xiàn)程狀態(tài)總結(jié) 52
1.6  線(xiàn)程池原理與實(shí)戰(zhàn) 54
1.6.1  JUC的線(xiàn)程池架構(gòu) 54
1.6.2  Executors的4種快捷創(chuàng)建線(xiàn)程池的方法 56
1.6.3  線(xiàn)程池的標(biāo)準(zhǔn)創(chuàng)建方式 62
1.6.4  向線(xiàn)程池提交任務(wù)的兩種方式 63
1.6.5  線(xiàn)程池的任務(wù)調(diào)度流程 66
1.6.6  ThreadFactory(線(xiàn)程工廠(chǎng)) 68
1.6.7  任務(wù)阻塞隊(duì)列 70
1.6.8  調(diào)度器的鉤子方法 70
1.6.9  線(xiàn)程池的拒絕策略 72
1.6.10  線(xiàn)程池的優(yōu)雅關(guān)閉 75
1.6.11  Executors快捷創(chuàng)建線(xiàn)程池的潛在問(wèn)題 80
1.7  確定線(xiàn)程池的線(xiàn)程數(shù) 83
1.7.1  按照任務(wù)類(lèi)型對(duì)線(xiàn)程池進(jìn)行分類(lèi) 83
1.7.2  為IO密集型任務(wù)確定線(xiàn)程數(shù) 84
1.7.3  為CPU密集型任務(wù)確定線(xiàn)程數(shù) 86
1.7.4  為混合型任務(wù)確定線(xiàn)程數(shù) 87
1.8  ThreadLocal原理與實(shí)戰(zhàn) 89
1.8.1  ThreadLocal的基本使用 89
1.8.2  ThreadLocal使用場(chǎng)景 91
1.8.3  使用ThreadLocal進(jìn)行線(xiàn)程隔離 92
1.8.4  使用ThreadLocal進(jìn)行跨函數(shù)數(shù)據(jù)傳遞 93
1.8.5  ThreadLocal內(nèi)部結(jié)構(gòu)演進(jìn) 94
1.8.6  ThreadLocal源碼分析 96
1.8.7  ThreadLocalMap源碼分析 99
1.8.8  ThreadLocal綜合使用案例 102
第2章  Java內(nèi)置鎖的核心原理 106
2.1  線(xiàn)程安全問(wèn)題 106
2.1.1  自增運(yùn)算不是線(xiàn)程安全的 106
2.1.2  臨界區(qū)資源與臨界區(qū)代碼段 108
2.2  synchronized關(guān)鍵字 109
2.2.1  synchronized同步方法 110
2.2.2  synchronized同步塊 110
2.2.3  靜態(tài)的同步方法 112
2.3  生產(chǎn)者-消費(fèi)者問(wèn)題 113
2.3.1  生產(chǎn)者-消費(fèi)者模式 113
2.3.2  一個(gè)線(xiàn)程不安全的實(shí)現(xiàn)版本 114
2.3.3  一個(gè)線(xiàn)程安全的實(shí)現(xiàn)版本 120
2.4  Java對(duì)象結(jié)構(gòu)與內(nèi)置鎖 121
2.4.1  Java對(duì)象結(jié)構(gòu) 121
2.4.2  Mark Word的結(jié)構(gòu)信息 124
2.4.3  使用JOL工具查看對(duì)象的布局 126
2.4.4  大小端問(wèn)題 129
2.4.5  無(wú)鎖、偏向鎖、輕量級(jí)鎖和重量級(jí)鎖 131
2.5  偏向鎖的原理與實(shí)戰(zhàn) 132
2.5.1  偏向鎖的核心原理 132
2.5.2  偏向鎖的演示案例 133
2.5.3  偏向鎖的膨脹和撤銷(xiāo) 136
2.5.4  全局安全點(diǎn)原理和偏向鎖撤銷(xiāo)的性能問(wèn)題 137
2.6  輕量級(jí)鎖的原理與實(shí)戰(zhàn) 139
2.6.1  輕量級(jí)鎖的核心原理 139
2.6.2  輕量級(jí)鎖的案例演示 141
2.6.3  輕量級(jí)鎖的分類(lèi) 143
2.6.4  輕量級(jí)鎖的膨脹 144
2.7  重量級(jí)鎖的原理與實(shí)戰(zhàn) 144
2.7.1  重量級(jí)鎖的核心原理 144
2.7.2  重量級(jí)鎖的開(kāi)銷(xiāo) 146
2.7.3  重量級(jí)鎖的演示案例 147
2.8  偏向鎖、輕量級(jí)鎖與重量級(jí)鎖的對(duì)比 149
2.9  線(xiàn)程間通信 150
2.9.1  線(xiàn)程間通信定義 150
2.9.2  低效的線(xiàn)程輪詢(xún) 150
2.9.3  wait方法、notify方法的原理 152
2.9.4  “等待-通知”通信模式演示案例 154
2.9.5  生產(chǎn)者-消費(fèi)者之間的線(xiàn)程間通信 156
2.9.6  需要在synchronized同步塊的內(nèi)部使用wait和notify 158
第3章  CAS原理與JUC原子類(lèi) 160
3.1  什么是CAS 160
3.1.1  Unsafe類(lèi)中的CAS方法 160
3.1.2  使用CAS進(jìn)行無(wú)鎖編程 162
3.1.3  使用無(wú)鎖編程實(shí)現(xiàn)輕量級(jí)安全自增 164
3.1.4  字段偏移量的計(jì)算 165
3.2  JUC原子類(lèi) 167
3.2.1  JUC中的Atomic原子操作包 167
3.2.2  基礎(chǔ)原子類(lèi)AtomicInteger 168
3.2.3  數(shù)組原子類(lèi)AtomicIntegerArray 170
3.2.4  AtomicInteger線(xiàn)程安全原理 171
3.3  對(duì)象操作的原子性 173
3.3.1  引用類(lèi)型原子類(lèi) 173
3.3.2  屬性更新原子類(lèi) 174
3.4  ABA問(wèn)題 175
3.4.1  了解ABA問(wèn)題 175
3.4.2  ABA問(wèn)題解決方案 177
3.4.3  使用AtomicStampedReference解決ABA問(wèn)題 177
3.4.4  使用AtomicMarkableReference解決ABA問(wèn)題 179
3.5  提升高并發(fā)場(chǎng)景下CAS操作的性能 180
3.5.1  以空間換時(shí)間:LongAdder 181
3.5.2  LongAdder的原理 183
3.6  CAS在JDK中的廣泛應(yīng)用 189
3.6.1  CAS操作的弊端和規(guī)避措施 190
3.6.2  CAS操作在JDK中的應(yīng)用 191
第4章  可見(jiàn)性與有序性原理 192
4.1  CPU物理緩存結(jié)構(gòu) 192
4.2  并發(fā)編程的三大問(wèn)題 194
4.2.1  原子性問(wèn)題 194
4.2.2  可見(jiàn)性問(wèn)題 195
4.2.3  有序性問(wèn)題 196
4.3  硬件層的MESI協(xié)議原理 198
4.3.1  總線(xiàn)鎖和緩存鎖 199
4.3.2  MSI協(xié)議 201
4.3.3  MESI協(xié)議及RFO請(qǐng)求 201
4.3.4  Store Buffer和Invalidate Queue 206
4.3.5  volatile的原理 207
4.4  有序性與內(nèi)存屏障 209
4.4.1  重排序 210
4.4.2  As-if-Serial規(guī)則 211
4.4.3  硬件層面的內(nèi)存屏障 212
4.5  JMM詳解 214
4.5.1  什么是Java內(nèi)存模型 214
4.5.2  JMM與JMM物理內(nèi)存的區(qū)別 216
4.5.3  JMM的8個(gè)操作 218
4.5.4  JMM如何解決有序性問(wèn)題 219
4.6  Happens-Before規(guī)則 222
4.6.1  Happens-Before規(guī)則介紹 222
4.6.2  規(guī)則1:順序性規(guī)則 223
4.6.3  規(guī)則2:volatile規(guī)則 223
4.6.4  規(guī)則3:傳遞性規(guī)則 225
4.6.5  規(guī)則4:監(jiān)視鎖規(guī)則 226
4.6.6  規(guī)則5:start()規(guī)則 227
4.6.7  規(guī)則6:join()規(guī)則 227
4.7  volatile語(yǔ)義中的內(nèi)存屏障 228
4.7.1  volatile寫(xiě)操作的內(nèi)存屏障 229
4.7.2  volatile讀操作的內(nèi)存屏障 229
4.7.3  對(duì)volatile變量的寫(xiě)入進(jìn)行性能優(yōu)化 230
4.8  volatile不具備原子性 232
4.8.1  volatile變量的自增實(shí)例 232
4.8.2  volatile變量的復(fù)合操作不具備原子性的原理 233
第5章  JUC顯式鎖的原理與實(shí)戰(zhàn) 235
5.1  顯式鎖 235
5.1.1  顯式鎖Lock接口 236
5.1.2  可重入鎖ReentrantLock 237
5.1.3  使用顯式鎖的模板代碼 239
5.1.4  基于顯式鎖進(jìn)行“等待-通知”方式的線(xiàn)程間通信 241
5.1.5  LockSupport 244
5.1.6  顯式鎖的分類(lèi) 247
5.2  悲觀(guān)鎖和樂(lè)觀(guān)鎖 249
5.2.1  悲觀(guān)鎖存在的問(wèn)題 249
5.2.2  通過(guò)CAS實(shí)現(xiàn)樂(lè)觀(guān)鎖 249
5.2.3  不可重入的自旋鎖 250
5.2.4  可重入的自旋鎖 251
5.2.5  CAS可能導(dǎo)致“總線(xiàn)風(fēng)暴” 252
5.2.6  CLH自旋鎖 254
5.3  公平鎖與非公平鎖 261
5.3.1  非公平鎖實(shí)戰(zhàn) 261
5.3.2  公平鎖實(shí)戰(zhàn) 262
5.4  可中斷鎖與不可中斷鎖 263
5.4.1  鎖的可中斷搶占 263
5.4.2  死鎖的監(jiān)測(cè)與中斷 265
5.5  獨(dú)占鎖與共享鎖 268
5.5.1  獨(dú)占鎖 268
5.5.2  共享鎖Semaphore 268
5.5.3  共享鎖CountDownLatch 271
5.6  讀寫(xiě)鎖 273
5.6.1  讀寫(xiě)鎖ReentrantReadWriteLock 273
5.6.2  鎖的升級(jí)與降級(jí) 275
5.6.3  StampedLock 276
第6章  AQS抽象同步器核心原理 280
6.1  鎖與隊(duì)列的關(guān)系 280
6.2  AQS的核心成員 282
6.2.1  狀態(tài)標(biāo)志位 282
6.2.2  隊(duì)列節(jié)點(diǎn)類(lèi) 283
6.2.3  FIFO雙向同步隊(duì)列 284
6.2.4  JUC顯式鎖與AQS的關(guān)系 285
6.2.5  ReentrantLock與AQS的組合關(guān)系 285
6.3  AQS中的模板模式 287
6.3.1  模板模式 288
6.3.2  一個(gè)模板模式的參考實(shí)現(xiàn) 289
6.3.3  AQS的模板流程 291
6.3.4  AQS中的鉤子方法 291
6.4  通過(guò)AQS實(shí)現(xiàn)一把簡(jiǎn)單的獨(dú)占鎖 292
6.4.1  簡(jiǎn)單的獨(dú)占鎖的UML類(lèi)圖 293
6.4.2  簡(jiǎn)單的獨(dú)占鎖的實(shí)現(xiàn) 293
6.4.3  SimpleMockLock測(cè)試用例 295
6.5  AQS鎖搶占的原理 296
6.5.1  顯式鎖搶占的總體流程 296
6.5.2  AQS模板方法:acquire(arg) 297
6.5.3  鉤子實(shí)現(xiàn):tryAcquire(arg) 297
6.5.4  直接入隊(duì):addWaiter 297
6.5.5  自旋入隊(duì):enq 298
6.5.6  自旋搶占:acquireQueued() 299
6.5.7  掛起預(yù)判:shouldParkAfterFailedAcquire 300
6.5.8  線(xiàn)程掛起:parkAndCheckInterrupt() 302
6.6  AQS兩個(gè)關(guān)鍵點(diǎn):節(jié)點(diǎn)的入隊(duì)和出隊(duì) 302
6.6.1  節(jié)點(diǎn)的自旋入隊(duì) 303
6.6.2  節(jié)點(diǎn)的出隊(duì) 303
6.7  AQS鎖釋放的原理 304
6.7.1  SimpleMockLock獨(dú)占鎖的釋放流程 304
6.7.2  AQS模板方法:release() 305
6.7.3  鉤子實(shí)現(xiàn):tryRelease() 305
6.7.4  喚醒后驅(qū):unparkSuccessor() 306
6.8  ReentrantLock的搶鎖流程 306
6.8.1  ReentrantLock非公平鎖的搶占流程 307
6.8.2  非公平鎖的同步器子類(lèi) 307
6.8.3  非公平搶占的鉤子方法:tryAcquire(arg) 308
6.8.4  ReentrantLock公平鎖的搶占流程 308
6.8.5  公平鎖的同步器子類(lèi) 309
6.8.6  公平搶占的鉤子方法:tryAcquire(arg) 309
6.8.7  是否有后驅(qū)節(jié)點(diǎn)的判斷 310
6.9  AQS條件隊(duì)列 310
6.9.1  Condition基本原理 310
6.9.2  await()等待方法原理 312
6.9.3  signal()喚醒方法原理 313
6.9.4  節(jié)點(diǎn)入隊(duì)的時(shí)機(jī) 314
6.10  AQS的實(shí)際應(yīng)用 315
第7章  JUC容器類(lèi) 316
7.1  線(xiàn)程安全的同步容器類(lèi) 316
7.2  JUC高并發(fā)容器 318
7.3  CopyOnWriteArrayList 319
7.3.1  CopyOnWriteArrayList的使用 320
7.3.2  CopyOnWriteArrayList原理 321
7.3.3  CopyOnWriteArrayList讀取操作 322
7.3.4  CopyOnWriteArrayList寫(xiě)入操作 323
7.3.5  CopyOnWriteArrayList的迭代器實(shí)現(xiàn) 323
7.4  BlockingQueue 324
7.4.1  BlockingQueue的特點(diǎn) 324
7.4.2  阻塞隊(duì)列的常用方法 325
7.4.3  常見(jiàn)的BlockingQueue 326
7.4.4  ArrayBlockingQueue的基本使用 328
7.4.5  ArrayBlockingQueue構(gòu)造器和成員 330
7.4.6  非阻塞式添加元素:add()、offer()方法的原理 332
7.4.7  阻塞式添加元素:put()方法的原理 333
7.4.8  非阻塞式刪除元素:poll()方法的原理 335
7.4.9  阻塞式刪除元素:take()方法的原理 335
7.4.10  peek()直接返回當(dāng)前隊(duì)列的隊(duì)首元素 337
7.5  ConcurrentHashMap 337
7.5.1  HashMap和HashTable的問(wèn)題 337
7.5.2  JDK 1.7版本ConcurrentHashMap的結(jié)構(gòu) 338
7.5.3  JDK 1.7版本ConcurrentHashMap的核心原理 339
7.5.4  JDK 1.8版本ConcurrentHashMap的結(jié)構(gòu) 346
7.5.5  JDK 1.8版本ConcurrentHashMap的核心原理 347
7.5.6  JDK 1.8版本ConcurrentHashMap的核心源碼 350
第8章  高并發(fā)設(shè)計(jì)模式 353
8.1  線(xiàn)程安全的單例模式 353
8.1.1  從餓漢式單例到懶漢式單例 353
8.1.2  使用內(nèi)置鎖保護(hù)懶漢式單例 354
8.1.3  雙重檢查鎖方式 355
8.1.4  使用雙重檢查鎖 volatile 356
8.1.5  使用靜態(tài)內(nèi)部類(lèi)實(shí)例懶漢單例模式 357
8.2  Master-Worker模式 357
8.2.1  Master-Worker模式的參考實(shí)現(xiàn) 358
8.2.2  Netty中的Master-Worker模式的實(shí)現(xiàn) 362
8.2.3  Nginx中的Master-Worker模式的實(shí)現(xiàn) 363
8.3  ForkJoin模式 364
8.3.1  ForkJoin模式的原理 364
8.3.2  ForkJoin框架 365
8.3.3  ForkJoin框架使用實(shí)戰(zhàn) 366
8.3.4  ForkJoin框架的核心API 367
8.3.5  工作竊取算法 370
8.3.6  ForkJoin框架的原理 371
8.4  生產(chǎn)者-消費(fèi)者模式 372
8.5  Future模式 373
第9章  異步回調(diào)模式 375
9.1  從泡茶的案例說(shuō)起 375
9.2  join:異步阻塞之悶葫蘆 376
9.2.1  線(xiàn)程的合并流程 376
9.2.2  調(diào)用join()實(shí)現(xiàn)異步泡茶喝 376
9.2.3  join()方法詳解 377
9.3  FutureTask:異步調(diào)用之重武器 378
9.3.1  通過(guò)FutureTask獲取異步執(zhí)行結(jié)果的步驟 379
9.3.2  使用FutureTask實(shí)現(xiàn)異步泡茶喝 379
9.4  異步回調(diào)與異步阻塞調(diào)用 382
9.5  Guava的異步回調(diào)模式 383
9.5.1  詳解FutureCallback 383
9.5.2  詳解ListenableFuture 384
9.5.3  ListenableFuture異步任務(wù) 384
9.5.4  使用Guava實(shí)現(xiàn)泡茶喝的實(shí)例 385
9.5.5  Guava異步回調(diào)和Java異步調(diào)用的區(qū)別 388
9.6  Netty的異步回調(diào)模式 389
9.6.1  GenericFutureListener接口詳解 389
9.6.2  Netty的Future接口詳解 389
9.6.3  ChannelFuture的使用 390
9.6.4  Netty的出站和入站異步回調(diào) 390
9.7  異步回調(diào)模式小結(jié) 391
第10章  CompletableFuture異步回調(diào) 392
10.1  CompletableFuture詳解 392
10.1.1  CompletableFuture的UML類(lèi)關(guān)系 392
10.1.2  CompletionStage接口 393
10.1.3  使用runAsync和supplyAsync創(chuàng)建子任務(wù) 393
10.1.4  設(shè)置的子任務(wù)回調(diào)鉤子 394
10.1.5  調(diào)用handle()方法統(tǒng)一處理異常和結(jié)果 396
10.1.6  線(xiàn)程池的使用 397
10.2  異步任務(wù)的串行執(zhí)行 398
10.2.1  thenApply()方法 398
10.2.2  thenRun()方法 399
10.2.3  thenAccept()方法 399
10.2.4  thenCompose()方法 400
10.2.5  4個(gè)任務(wù)串行方法的區(qū)別 401
10.3  異步任務(wù)的合并執(zhí)行 402
10.3.1  thenCombine()方法 402
10.3.2  runAfterBoth()方法 404
10.3.3  thenAcceptBoth()方法 404
10.3.4  allOf()等待所有的任務(wù)結(jié)束 405
10.4  異步任務(wù)的選擇執(zhí)行 405
10.4.1  applyToEither()方法 406
10.4.2  runAfterEither()方法 407
10.4.3  acceptEither()方法 407
10.5  CompletableFuture的綜合案例 408
10.5.1  使用CompletableFuture實(shí)現(xiàn)泡茶喝實(shí)例 408
10.5.2  使用CompletableFuture進(jìn)行多個(gè)RPC調(diào)用 410
10.5.3  使用RxJava模擬RPC異步回調(diào) 411
 

本目錄推薦

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