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

深入理解Java高并發(fā)編程

深入理解Java高并發(fā)編程

定 價(jià):¥148.00

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

ISBN: 9787302591344 出版時(shí)間: 2021-11-01 包裝: 平裝
開本: 16開 頁數(shù): 636 字?jǐn)?shù):  

內(nèi)容簡介

  《深入理解Java高并發(fā)編程》致力于介紹Java高并發(fā)編程方面的知識(shí)。由于多線程處理涉及的知識(shí)內(nèi)容十分豐富,因此介紹時(shí)必須從Java層面的講解一直深入到底層的知識(shí)講解。為了幫助讀者輕松閱讀本書并掌握其中知識(shí),本書做了大量基礎(chǔ)知識(shí)的鋪墊。在第1篇基礎(chǔ)知識(shí)儲(chǔ)備中,主要介紹計(jì)算機(jī)原理、并發(fā)基礎(chǔ)、常見語言的線程實(shí)現(xiàn)、Java并發(fā)入門、JUC之Java線程池、JUC之同步結(jié)構(gòu)、Java NIO詳解等內(nèi)容。在第2篇深入Java并發(fā)原理中,詳細(xì)介紹了JUC包中所有使用的原子類的原理與源碼實(shí)現(xiàn);非常關(guān)鍵且容易出錯(cuò)的volatile關(guān)鍵字的原理,從Java、JVM、C、匯編、CPU層面對(duì)其進(jìn)行詳細(xì)講解;synchronized在JVM中獲取鎖和釋放鎖的流程;JUC包的核心結(jié)構(gòu)——AQS的原理與源碼實(shí)現(xiàn),通過逐方法、逐行的解釋,幫助讀者徹底掌握AQS中提供的獲取鎖、釋放鎖、條件變量等操作的實(shí)現(xiàn)與原理。最后,詳細(xì)介紹了JVM中JNI的實(shí)現(xiàn)原理,將Java Thread對(duì)象中的所有方法在JVM層面的實(shí)現(xiàn)流程進(jìn)行了詳細(xì)描述,以幫助讀者在使用這些方法時(shí),知道底層發(fā)生了什么,以及發(fā)生異常時(shí)如何從容解決問題。

作者簡介

  黃俊,專注于研究Java語言, Hotspot, Linux內(nèi)核,C語言與匯編,架構(gòu)設(shè)計(jì),多線程并發(fā)處理,專注于研究高效學(xué)習(xí)方式。曾就職于美團(tuán)、阿里,前新東方業(yè)務(wù)架構(gòu)師。

圖書目錄

第1篇 基礎(chǔ)知識(shí)儲(chǔ)備
第1章 計(jì)算機(jī)原理 2
1.1 匯編語言基礎(chǔ) 2
1.1.1 匯編語言與機(jī)器語言 2
1.1.2 常見的寄存器 3
1.1.3 常見操作語句 6
1.1.4 內(nèi)聯(lián)匯編 6
1.1.5 常見助記符 9
1.2 C語言基礎(chǔ) 12
1.2.1 基本數(shù)據(jù)類型 12
1.2.2 結(jié)構(gòu)體原理 13
1.2.3 指針原理 19
1.2.4 指針與數(shù)組原理 21
1.3 計(jì)算機(jī)組成原理基礎(chǔ) 23
1.3.1 intel的發(fā)展歷史 23
1.3.2 計(jì)算機(jī)程序的組成 29
1.3.3 計(jì)算機(jī)的內(nèi)存管理與內(nèi)存地址原理 36
1.3.4 計(jì)算機(jī)程序的執(zhí)行原理 44
1.4 OS概述 52
1.4.1 OS的發(fā)展歷程和分類 53
1.4.2 常用的OS系統(tǒng) 56
1.5 小結(jié) 57
第2章 并發(fā)基礎(chǔ) 58
2.1 并發(fā)與并行原理 58
2.1.1 并發(fā) 58
2.1.2 并行 59
2.1.3 并發(fā)與并行帶來的問題 59
2.2 傳統(tǒng)OS并發(fā)控制原理 60
2.2.1 P-V原語 60
2.2.2 信號(hào)量 61
2.2.3 互斥量 62
2.2.4 自旋鎖 62
2.2.5 讀寫鎖 63
2.2.6 死鎖 64
2.3 CPU并發(fā)控制原理 66
2.3.1 中斷控制 66
2.3.2 緩存一致性協(xié)議 67
2.3.3 系統(tǒng)屏障 69
2.3.4 總線/緩存鎖 73
2.4 Linux內(nèi)核并發(fā)控制原理 73
2.4.1 Linux內(nèi)核信號(hào)量與P-V原語實(shí)現(xiàn)原理 74
2.4.2 Linux內(nèi)核互斥量實(shí)現(xiàn)原理 80
2.4.3 Linux內(nèi)核自旋鎖實(shí)現(xiàn)原理 80
2.4.4 Linux內(nèi)核讀寫鎖實(shí)現(xiàn)原理 84
2.4.5 Linux內(nèi)核中斷控制與內(nèi)核搶占原理 91
2.4.6 Linux內(nèi)核seq鎖實(shí)現(xiàn)原理 98
2.4.7 Linux內(nèi)核rcu鎖實(shí)現(xiàn)原理 100
2.5 Glibc和Pthread庫原理 105
2.5.1 C標(biāo)準(zhǔn)、CRT與Glibc 105
2.5.2 LinuxThread與POSIX、NGTP、NPTL 107
2.5.3 NPTL常用函數(shù)與實(shí)現(xiàn)原理 108
2.6 小結(jié) 131
第3章 常見語言的線程實(shí)現(xiàn) 132
3.1 匯編語言多線程實(shí)現(xiàn) 132
3.2 C語言多線程實(shí)現(xiàn) 133
3.3 Go語言多線程實(shí)現(xiàn) 134
3.4 Python語言多線程實(shí)現(xiàn) 135
3.5 Java語言多線程實(shí)現(xiàn) 135
3.6 不同語言并發(fā)異同與知識(shí)推理 136
3.7 小結(jié) 136
第4章 Java并發(fā)入門 137
4.1 Java Thread類核心原理與方法 137
4.1.1 走進(jìn)Thread 138
4.1.2 run方法 139
4.1.3 start方法 139
4.1.4 stop方法 140
4.1.5 destory方法 140
4.1.6 interrupt方法 141
4.1.7 sleep方法 142
4.1.8 join方法 142
4.1.9 Thread方法使用與線程狀態(tài)轉(zhuǎn)換 143
4.2 Runnable與Callable的使用 144
4.3 Future接口的使用 146
4.4 Promise接口的使用 147
4.5 volatile關(guān)鍵字的使用 147
4.6 synchronized關(guān)鍵字的使用 148
4.7 小結(jié) 149
第5章 JUC之Java線程池 150
5.1 Executor與ExecutorService詳解 150
5.1.1 Executor接口原理 150
5.1.2 ExecutorService接口原理 151
5.2 ThreadPoolExecutor詳解 156
5.2.1 ThreadPoolExecutor例子 156
5.2.2 ThreadPoolExecutor核心數(shù)據(jù)結(jié)構(gòu) 156
5.2.3 execute方法的實(shí)現(xiàn)原理 159
5.2.4 shutdown方法實(shí)現(xiàn)原理 164
5.2.5 awaitTermination方法的實(shí)現(xiàn)原理 166
5.2.6 shutdownNow方法的實(shí)現(xiàn)原理 167
5.3 ScheduledThreadPoolExecutor詳解 168
5.3.1 ScheduledThreadPoolExecutor例子 169
5.3.2 ScheduledExecutorService接口 170
5.3.3 ScheduledThreadPoolExecutor核心變量 170
5.3.4 scheduleAtFixedRate實(shí)現(xiàn)與原理 172
5.3.5 ScheduledFutureTask實(shí)現(xiàn)與原理 176
5.3.6 scheduleWithFixedDelay實(shí)現(xiàn)與原理 177
5.3.7 shutdown實(shí)現(xiàn)與原理 178
5.4 構(gòu)建不同線程池 179
5.4.1 FixedThreadPool 179
5.4.2 SingleThreadExecutor 179
5.4.3 CachedThreadPool 180
5.4.4 SingleThreadScheduledExecutor 180
5.4.5 ScheduledThreadPool 181
5.5 ForkJoinPool詳解 181
5.5.1 ForkJoinPool核心數(shù)據(jù)結(jié)構(gòu)與方法 181
5.5.2 ForkJoinPool externalPush實(shí)現(xiàn)原理 185
5.5.3 ForkJoinPool externalSubmit實(shí)現(xiàn)原理 185
5.5.4 ForkJoinPool signalWork實(shí)現(xiàn)原理 187
5.5.5 ForkJoinPool tryAddWorker實(shí)現(xiàn)原理 188
5.5.6 ForkJoinPool createWorker實(shí)現(xiàn)原理 189
5.5.7 ForkJoinPool registerWorker實(shí)現(xiàn)原理 189
5.5.8 ForkJoinPool ForkJoinWorkerThread執(zhí)行原理 190
5.5.9 ForkJoinPool scan竊取算法原理 191
5.5.10 ForkJoinPool runTask原理 194
5.5.11 ForkJoinPool awaitWork原理 196
5.5.12 ForkJoinPool切割子任務(wù) 197
5.5.13 ForkJoinTask doExec原理 198
5.5.14 ForkJoinTask fork原理 202
5.5.15 ForkJoinTask join原理 202
5.5.16 ForkJoinPool awaitJoin原理 204
5.5.17 ForkJoinPool tryRemoveAndExec原理 205
5.5.18 ForkJoinPool helpStealer原理 207
5.5.19 ForkJoinPool tryCompensate原理 209
5.5.20 ForkJoinPool shutdown原理 211
5.5.21 ForkJoinPool awaitTermination原理 214
5.5.22 ForkJoinPool總結(jié) 215
5.5.23 RecursiveAction原理 216
5.5.24 RecursiveTask原理 217
5.5.25 CountedCompleter原理 218
5.6 CompletableFuture詳解 234
5.6.1 CompletableFuture 概念與例子 234
5.6.2 CompletableFuture CompletionStage接口 235
5.6.3 CompletableFuture runAsync原理 237
5.6.4 CompletableFuture postComplete原理 238
5.6.5 CompletableFuture Completion原理 239
5.6.6 CompletableFuture allOf原理 246
5.7 小結(jié) 253
第6章 JUC之同步結(jié)構(gòu) 254
6.1 同步結(jié)構(gòu)基礎(chǔ)實(shí)現(xiàn)原理 254
6.1.1 Lock接口 254
6.1.2 Condition接口 255
6.1.3 LockSupport類 255
6.1.4 AQS類 256
6.1.5 隊(duì)列核心接口 259
6.2 ReentrantLock實(shí)現(xiàn)與原理 262
6.3 ReentrantReadWriteLock實(shí)現(xiàn)與原理 264
6.4 Semapher實(shí)現(xiàn)與原理 271
6.5 FutureTask實(shí)現(xiàn)與原理 273
6.6 ArrayBlockingQueue實(shí)現(xiàn)與原理 278
6.7 LinkedBlockingQueue實(shí)現(xiàn)與原理 281
6.8 LinkedBlockingDeque實(shí)現(xiàn)與原理 284
6.9 LinkedTransferQueue實(shí)現(xiàn)與原理 288
6.10 SynchronousQueue實(shí)現(xiàn)與原理 295
6.11 PriorityBlockingQueue實(shí)現(xiàn)與原理 305
6.12 ConcurrentLinkedQueue實(shí)現(xiàn)與原理 310
6.13 ConcurrentLinkedDeque實(shí)現(xiàn)與原理 315
6.14 ThreadLocalRandom實(shí)現(xiàn)與原理 326
6.15 CopyOnWriteArrayList實(shí)現(xiàn)與原理 329
6.16 CopyOnWriteArraySet實(shí)現(xiàn)與原理 331
6.17 CountDownLatch實(shí)現(xiàn)與原理 333
6.18 CyclicBarrier實(shí)現(xiàn)與原理 335
6.19 ConcurrentHashMap實(shí)現(xiàn)與原理 338
6.20 ConcurrentSkipListMap實(shí)現(xiàn)與原理 354
6.21 ConcurrentSkipListSet實(shí)現(xiàn)與原理 363
6.22 Exchanger實(shí)現(xiàn)與原理 364
6.23 Phaser實(shí)現(xiàn)與原理 372
6.24 小結(jié) 380
第7章 Java NIO詳解 382
7.1 NIO三劍客之Buffer原理 382
7.1.1 Buffer 383
7.1.2 ByteBuffer 385
7.1.3 HeapByteBuffer 394
7.1.4 MappedByteBuffer 396
7.1.5 DirectByteBuffer 398
7.2 NIO三劍客之Channel原理 403
7.2.1 Channel 403
7.2.2 FileChannel 404
7.2.3 SocketChannel 408
7.2.4 ServerSocketChannel 412
7.2.5 DatagramChannel 415
7.3 NIO三劍客之Selector原理 420
7.3.1 Selector 420
7.3.2 SelectionKey 423
7.4 小結(jié) 431
第2篇 深入Java并發(fā)原理
第8章 JVM synchronized與volatile原理詳解 434
8.1 JVM源碼分析之Unsafe類 434
8.1.1 compareAndSwap類方法實(shí)現(xiàn)原理 435
8.1.2 getIntVolatile方法實(shí)現(xiàn)原理 435
8.1.3 putIntVolatile方法實(shí)現(xiàn)原理 435
8.1.4 putOrderedInt方法實(shí)現(xiàn)原理 436
8.1.5 park方法實(shí)現(xiàn)原理 437
8.1.6 loadFence方法實(shí)現(xiàn)原理 438
8.1.7 storeFence方法實(shí)現(xiàn)原理 438
8.1.8 fullFence方法 438
8.2 JVM源碼分析之原子類 439
8.2.1 AtomicInteger實(shí)現(xiàn)與原理 439
8.2.2 AtomicBoolean實(shí)現(xiàn)與原理 440
8.2.3 AtomicIntegerArray實(shí)現(xiàn)與原理 441
8.2.4 AtomicIntegerFieldUpdater實(shí)現(xiàn)與原理 443
8.2.5 AtomicLong實(shí)現(xiàn)與原理 445
8.2.6 AtomicLongArray實(shí)現(xiàn)與原理 446
8.2.7 AtomicLongFieldUpdater實(shí)現(xiàn)與原理 447
8.2.8 AtomicMarkableReference實(shí)現(xiàn)與原理 450
8.2.9 AtomicStampedReference實(shí)現(xiàn)與原理 451
8.2.10 AtomicReference實(shí)現(xiàn)與原理 454
8.2.11 AtomicReferenceArray實(shí)現(xiàn)與原理 454
8.2.12 AtomicReferenceFieldUpdater實(shí)現(xiàn)與原理 455
8.2.13 DoubleAccumulator實(shí)現(xiàn)與原理 457
8.2.14 DoubleAdder實(shí)現(xiàn)與原理 465
8.2.15 LongAccumulator實(shí)現(xiàn)與原理 466
8.2.16 LongAdder實(shí)現(xiàn)與原理 467
8.3 volatile原理分析 469
8.3.1 JVM內(nèi)存模型 469
8.3.2 Java中happens-before原則 469
8.3.3 Java中Volatile語義 470
8.3.4 Java中Volatile字節(jié)碼原理 472
8.3.5 JVM中putstatic和getstatic字節(jié)碼原理 473
8.3.6 C/C++中的volatile原理 475
8.3.7 JVM中volatile對(duì)于禁止重排序的實(shí)現(xiàn)原理 477
8.3.8 從Pthread線程庫分析C的volatile語義 480
8.3.9 JMM和CPU模型原理 484
8.4 synchronized源碼分析 488
8.4.1 Java對(duì)象頭原理 488
8.4.2 _monitorenter 獲取鎖過程原理 490
8.4.3 _monitorexit 釋放鎖過程原理 513
8.4.4 Object.wait 等待過程原理 518
8.4.5 Object.notify 喚醒過程原理 522
8.4.6 Object.notifyAll 喚醒全部過程原理 524
8.4.7 Object.hashcode 獲取哈希碼過程原理 526
8.5 小結(jié) 530
第9章 AQS源碼詳解 531
9.1 compare and swap原理詳解 531
9.1.1 compare and swap概念 531
9.1.2 Java層面compare and swap實(shí)現(xiàn)原理 531
9.1.3 Hotspot虛擬機(jī)層面compare and swap實(shí)現(xiàn)原理 532
9.1.4 匯編層面compare and swap實(shí)現(xiàn)原理 533
9.2 AQS核心之Node類 533
9.3 AQS核心之head和tail變量 534
9.4 AQS核心之state變量 535
9.5 AQS核心之a(chǎn)cquire過程原理 536
9.6 AQS核心之a(chǎn)cquireInterruptibly過程原理 540
9.7 AQS核心之a(chǎn)cquireShared過程原理 541
9.8 AQS核心之a(chǎn)cquireSharedInterruptibly過程原理 544
9.9 AQS核心之release過程原理 544
9.10 AQS核心之releaseShared過程原理 545
9.11 AQS核心之條件變量原理 545
9.11.1 ConditionObject類 545
9.11.2 await Node等待操作原理 546
9.11.3 signal Node喚醒操作原理 550
9.11.4 相關(guān)工具方法詳述 552
9.12 小結(jié) 553
第10章 JVM線程原理詳解 554
10.1 JNI詳述 554
10.1.1 JNI概念 554
10.1.2 JVM執(zhí)行外部動(dòng)態(tài)鏈接庫原理 556
10.1.3 JVM執(zhí)行內(nèi)部動(dòng)態(tài)鏈接庫原理 578
10.1.4 JNIEnv結(jié)構(gòu)體原理 583
10.2 Java Thread類源碼解析 584
10.3 Java Thread Start原理解析 585
10.4 Java Thread Stop原理解析 592
10.5 Java Thread Interrupt原理解析 594
10.6 Java Thread isInterrupted原理解析 595
10.7 Java Thread Sleep原理解析 596
10.8 Java Thread Yield原理解析 598
10.9 Java Thread Suspend原理解析 599
10.10 Java Thread Resume原理解析 601
10.11 JVM Thread層級(jí)結(jié)構(gòu) 601
10.12 JVM互斥體原理 605
10.12.1 ParkEvent與Parker原理 606
10.12.2 MutexLocker原理 614
10.12.3 MutexLockerEx原理 615
10.12.4 Mutex和Monitor原理 616
10.13 小結(jié) 623

本目錄推薦

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