隨著移動互聯(lián)網(wǎng)的發(fā)展,幾乎所有主流的互聯(lián)網(wǎng)應用都需要應對高并發(fā)場景,所以不管是Java初學者,還是Java開發(fā)老兵,了解和掌握Java高并發(fā)編程的相關知識都是非常必要的。本書以由淺入深的方式來對Java高并發(fā)編程的相關知識進行講解,首先是對高并發(fā)的理解、多線程基礎、Java并發(fā)包相關類的使用與設計原理進行介紹;然后再拓展講解高并發(fā)系統(tǒng)設計的相關原理和涉及的相關框架、中間件等;最后對流行的Java開源框架的源碼設計進行分析,以及結合實現(xiàn)一個簡易版的秒.殺系統(tǒng)來介紹如何基于Java語言實現(xiàn)一個高并發(fā)系統(tǒng),最終達到原理與實踐結合的目的。
1.內容由淺入深,詳略得當,符合認知規(guī)律
本書在整體內容結構方面,依次分為基礎篇、進階篇、拓展篇和實戰(zhàn)篇。通過這種由淺
入深、循序漸進的講解方式,初學者在對整本書學習后能夠掌握 Java 高并發(fā)編程的核心要點。
對于擁有一定經(jīng)驗的工程師來說,則可以根據(jù)自身技術的掌握情況,有選擇地學習相應的章節(jié)。
2.豐富的 Java 并發(fā)包和開源框架源碼分析,知其然更知其所以然
本書的定位是讓讀者不只停留在對 Java 并發(fā)包和開源框架相關核心類用法的掌握上,而且
能夠理解和掌握對應類的底層源碼實現(xiàn),從而設計出更加健壯和高效的代碼,以及在工作中可
以快速定位問題所在。所以本書提供了豐富、詳細的 Java 并發(fā)包和開源框架的源碼設計與實現(xiàn)
分析,以便讀者能夠知其然更知其所以然。其中 Java 源代碼分析主要是基于 JDK 1.8 版本。
3.分布式、高并發(fā)設計要點分析,提高實戰(zhàn)能力
接觸過高并發(fā)設計的工程師都知道,高并發(fā)是繞不開分布式的。因為多線程設
計只能蕞大限度地提高單臺機器的并發(fā)處理能力,要應對海量高并發(fā)請求,單臺機器是遠遠
不夠的。所以在本書的第三部分對分布式設計的相關理論、核心設計要點,以及相關技
術框架和中間件進行了分析,以便幫助讀者能夠理解和掌握如何進行企業(yè)級的高并發(fā)設
計,提高實戰(zhàn)能力。
謝議尊,畢業(yè)于中山大學軟件工程專業(yè),目前在BAT其中一家擔任高級開發(fā)工程師,擅長Java高并發(fā)服務端編程,有著豐富的一線開發(fā)實戰(zhàn)經(jīng)驗。
第1章 高并發(fā)的理解 2
1.2 高并發(fā)的應對策略 .......7
1.3 小結 ...... 12
第2章 操作系統(tǒng)多線程基礎 13
2.1 線程概念 . 14
2.2 多線程的挑戰(zhàn) ..........20
2.3 小結 ......24
第3章 Java 多線程基礎 25
3.1 線程的使用 .............26
3.2 線程的狀態(tài)與狀態(tài)轉換 ..............34
3.3 線程安全 .40
3.4 小結 ......63
第4章 Executor 線程池框架 66
4.1 Executor 線程池框架設計概述 ...67
4.2 Executor 接口與 ExecutorService 接口 ...68
4.3 ThreadPoolExecutor 線程池 ..69
4.4 Future 任務的異步結果 ............83
4.5 ScheduledExecutorService 任務周期性執(zhí)行 ...........92
4.6 Executors 線程池創(chuàng)建工具 ......96
4.7 ForkJoin 任務分解與并行執(zhí)行框架 .......... 100
4.8 小結 .... 111
第5章 Java 線程安全字典 112
5.1 Hashtable 全同步 Map ......... 113
5.2 SynchronizedMap 同步器 Map ............ 116
5.3 ConcurrentHashMap 并發(fā) Map .......... 119
5.4 ConcurrentSkipListMap 有序并發(fā) Map . 142
5.5 小結 .... 146
第6章 Java 并發(fā)隊列 147
6.1 BlockingQueue 阻塞先入先出隊列 ......... 148
6.2 BlockingDeque 阻塞先入先出雙端隊列 .... 161
6.3 ConcurrentLinkedQueue 并發(fā)隊列 ...... 165
6.4 CopyOnWriteArrayList 寫時拷貝列表 .... 172
6.5 小結 .... 180
第7章 AQS 線程同步器 181
7.1 AQS 線程同步器基礎 ............. 182
7.2 ReentrantLock 可重入鎖 ...... 191
7.3 CountDownLatch 倒計時同步器 ............ 203
7.4 CyclicBarrier 循環(huán)柵欄同步器 209
7.5 Semaphore 信號量同步器 ..... 216
7.6 小結 .... 222
第8章 分布式系統(tǒng)設計理論 224
8.1 系統(tǒng)架構演進 ........ 225
8.2 分布式理論 ........... 231
8.3 高并發(fā) .. 234
8.4 負載均衡 .............. 235
8.5 緩存機制 .............. 239
8.6 異步處理 .............. 243
8.7 高可用 .. 244
8.8 可靠性與容錯機制 ... 248
8.9 小結 .... 253
第9章 Java 分布式應用設計核心技術 254
9.1 分布式服務調用 RPC 框架 ...... 255
9.2 分布式消息隊列 ..... 270
9.3 AMQP 協(xié)議實現(xiàn):RabbitMQ 270
9.4 海量消息處理:Kafka ............ 281
9.5 Redis 消息隊列與發(fā)布訂閱 ..... 286
9.6 分布式緩存 ........... 292
9.7 分布式鎖 ..............299
9.8 小結 .... 304
第 10 章 開源框架高并發(fā)源碼分析 306
10.1 Dubbo 高并發(fā)編程實戰(zhàn) ........ 307
10.2 Netty 與 Tomcat 的線程模型 . 326
10.3 小結 ... 348
第 11 章 秒殺系統(tǒng)設計分析 349
11.1 秒殺系統(tǒng)設計概述 . 350
11.2 限流機制 ............ 355
11.3 緩存的使用 .......... 358
11.4 分布式鎖的使用 .... 362
11.5 隊列削峰與異步處理 ............. 366
11.6 小結 ... 369