-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
實戰Java高并發程序設計(第3版) 版權信息
- ISBN:9787121437076
- 條形碼:9787121437076 ; 978-7-121-43707-6
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
實戰Java高并發程序設計(第3版) 本書特色
適讀人群 :所有java從業人員,所有數據庫工程師邏輯順暢。全書脈絡清晰,從Java高并發程序的設計基礎開始由底層原理落實到具體案例,環環相扣,完整流暢。結構嚴謹。總體上循序漸進,逐步提升。每一章都各自有鮮明的側重點,有利于讀者快速抓住重點。實用性強。本書注重實戰,采用了理論結合實踐的編寫方法,給重要的知識點都安排了代碼實例,幫助讀者在工作中實戰應用。通俗易懂。相較于抽象的理論堆疊,本書采用簡單的白話文敘述風格,搭配上手工繪制的配圖,行文流暢,簡潔明了,降低了閱讀門檻和理解難度,爭取讓讀者在閱讀過程中少盲點、無盲點。 ★專業**、查閱方便、很實用、脈絡清晰,好書,受益非淺,值得推薦 ★淺顯易懂,描述清晰簡潔,不累贅,不拖沓。初學者和有經驗者都適合★對多線程高并發講解的非常到位,葛老師的Java系列書都很不錯★比起《Java并發編程藝術》,本書介紹的JDK API多些。那些API都是大師寫出來的,能夠學到很多經驗。★這本書學著不錯,挺實用的,一直以來要找的并發,就是它了,很好★經典書籍,值得多讀、細讀、認真讀,相當好,通俗易懂,推薦購買★很好的關于Java高并發的書,基礎性、系統性很好,對于新的Java8的相關描述不錯,很多示例,簡單易懂★書質量不錯,大部分知識點都有,內容翔實又精煉,值得好好學習!高并發編程,提高程序效率★從模式原理的角度介紹了如何設計并發程序,以及為何這么設計真心不錯,用心讀會有很多收獲。入門佳品。符合目前的主流。
實戰Java高并發程序設計(第3版) 內容簡介
在單核CPU時代,單任務在一個時間點只能執行單一程序,隨著多核CPU的發展,并行程序開發變得尤為重要。 本書主要介紹基于Java的并行程序設計基礎、思路、方法和實戰。**,立足于并行程序基礎,詳細介紹Java并行程序設計的基本方法。第二,進一步詳細介紹JDK對并行程序的強大支持,幫助讀者快速、穩健地進行并行程序開發。第三,詳細討論“鎖”的優化,以及提高并行程序性能級別的方法和思路。第四,介紹并行的基本設計模式,以及Java 8/9/10對并行程序的支持和改進。第五,介紹高并發框架Akka的使用方法。第六,詳細介紹并行程序的調試方法。第七,分析Jetty代碼并給出一些其在高并發優化方面的例子。 本書內容豐富,實例典型,實用性強,適合有一定Java基礎的技術開發人員閱讀。
實戰Java高并發程序設計(第3版) 目錄
第1章 走入并行世界 1
1.1 何去何從的并行計算 1
1.1.1 忘掉那該死的并行 2
1.1.2 可怕的現實:摩爾定律的失效 4
1.1.3 柳暗花明:不斷地前進 5
1.1.4 光明或是黑暗 6
1.2 你必須知道的幾個概念 7
1.2.1 同步(Synchronous)和異步(Asynchronous) 7
1.2.2 并發(Concurrency)和并行(Parallelism) 8
1.2.3 臨界區 9
1.2.4 阻塞(Blocking)和非阻塞(Non-Blocking) 9
1.2.5 死鎖(Deadlock)、饑餓(Starvation)和活鎖(Livelock) 10
1.3 并發級別 11
1.3.1 阻塞 11
1.3.2 無饑餓(Starvation-Free) 11
1.3.3 無障礙(Obstruction-Free) 12
1.3.4 無鎖(Lock-Free) 13
1.3.5 無等待(Wait-Free) 13
1.4 有關并行的兩個重要定律 14
1.4.1 Amdahl定律 14
1.4.2 Gustafson定律 16
1.4.3 是否相互矛盾 17
1.5 回到Java:JMM 18
1.5.1 原子性(Atomicity) 18
1.5.2 可見性(Visibility) 20
1.5.3 有序性(Ordering) 22
1.5.4 哪些指令不能重排:Happen-Before規則 27
第2章 Java并行程序基礎 29
2.1 有關線程你必須知道的事 29
2.2 初始線程:線程的基本操作 32
2.2.1 新建線程 32
2.2.2 終止線程 34
2.2.3 線程中斷 38
2.2.4 等待(wait)和通知(notify) 41
2.2.5 掛起(suspend)和繼續執行(resume)線程 45
2.2.6 等待線程結束(join)和謙讓(yield) 48
2.3 volatile與Java內存模型(JMM) 50
2.4 分門別類的管理:線程組 53
2.5 駐守后臺:守護線程(Daemon) 54
2.6 先做重要的事:線程優先級 55
2.7 線程安全的概念與關鍵字synchronized 57
2.8 程序中的幽靈:隱蔽的錯誤 61
2.8.1 無提示的錯誤案例 61
2.8.2 并發下的ArrayList 62
2.8.3 并發下詭異的HashMap 64
2.8.4 初學者常見的問題:錯誤的加鎖 66
第3章 JDK并發包 69
3.1 多線程的團隊協作:同步控制 69
3.1.1 超越synchronized的同步工具:重入鎖 70
3.1.2 重入鎖的好搭檔:Condition 79
3.1.3 允許多個線程同時訪問:信號量(Semaphore) 83
3.1.4 ReadWriteLock讀寫鎖 85
3.1.5 倒計數器:CountDownLatch 88
3.1.6 循環柵欄:CyclicBarrier 89
3.1.7 線程阻塞工具類:LockSupport 93
3.1.8 深入理解鎖:AbstractQueuedSynchronizer 96
3.1.9 Guava和RateLimiter限流 105
3.2 線程復用:線程池 108
3.2.1 什么是線程池 109
3.2.2 不要重復發明輪子:JDK對線程池的支持 110
3.2.3 刨根究底:核心線程池的內部實現 116
3.2.4 超負載了怎么辦:拒絕策略 120
3.2.5 自定義線程創建:ThreadFactory 122
3.2.6 我的應用我做主:擴展線程池 123
3.2.7 合理的選擇:優化線程池線程數量 126
3.2.8 堆棧去哪里了:在線程池中尋找堆棧 127
3.2.9 分而治之:Fork/Join框架 131
3.2.10 Guava中對線程池的擴展 135
3.3 不要重復發明輪子:JDK的并發容器 137
3.3.1 超好用的工具類:并發集合簡介 137
3.3.2 線程安全的HashMap 138
3.3.3 深入淺出ConcurrentHashMap 139
3.3.4 有關List的線程安全 145
3.3.5 高效讀寫的隊列:深度剖析ConcurrentLinkedQueue類 145
3.3.6 高效讀取:不變模式下的CopyOnWriteArrayList類 151
3.3.7 數據共享通道:BlockingQueue 152
3.3.8 隨機數據結構:跳表(SkipList) 157
3.4 使用JMH進行性能測試 159
3.4.1 什么是JMH 160
3.4.2 Hello JMH 160
3.4.3 JMH的基本概念和配置 163
3.4.4 理解JMH中的Mode 164
3.4.5 理解JMH中的State 166
3.4.6 有關性能的一些思考 166
3.4.7 CopyOnWriteArrayList類與ConcurrentLinkedQueue類 169
第4章 鎖的優化及注意事項 172
4.1 有助于提高鎖性能的幾點建議 173
4.1.1 減少鎖持有時間 173
4.1.2 減小鎖粒度 174
4.1.3 用讀寫分離鎖來替換獨占鎖 175
4.1.4 鎖分離 175
4.1.5 鎖粗化 178
4.2 Java虛擬機對鎖優化所做的努力 179
4.2.1 鎖偏向 179
4.2.2 輕量級鎖 180
4.2.3 自旋鎖 180
4.2.4 鎖消除 180
4.3 人手一支筆:ThreadLocal 181
4.3.1 ThreadLocal的簡單使用 181
4.3.2 ThreadLocal的實現原理 183
4.3.3 對性能有何幫助 189
4.3.4 線程私有的隨機數發生器ThreadLocalRandom 192
4.4 無鎖 197
4.4.1 與眾不同的并發策略:比較交換 197
4.4.2 無鎖的線程安全整數:AtomicInteger 198
4.4.3 Java中的指針:Unsafe類 200
4.4.4 無鎖的對象引用:AtomicReference 202
4.4.5 帶有時間戳的對象引用:AtomicStampedReference 205
4.4.6 數組也能無鎖:AtomicIntegerArray 208
4.4.7 讓普通變量也享受原子操作:AtomicIntegerFieldUpdater 209
4.4.8 挑戰無鎖算法:無鎖的Vector實現 211
4.4.9 讓線程之間互相幫助:細看SynchronousQueue的實現 216
4.5 有關死鎖的問題 220
第5章 并行模式與算法 224
5.1 探討單例模式 224
5.2 不變模式 228
5.3 生產者-消費者模式 230
5.4 高性能的生產者-消費者模式:無鎖的實現 235
5.4.1 無鎖的緩存框架:Disruptor 235
5.4.2 用Disruptor框架實現生產者-消費者模式的案例 236
5.4.3 提高消費者的響應時間:選擇合適的策略 240
5.4.4 CPU Cache的優化:解決偽共享問題 241
5.5 Future模式 244
5.5.1 Future模式的主要參與者 247
5.5.2 Future模式的簡單實現 247
5.5.3 JDK中的Future模式 250
5.5.4 Guava對Future模式的支持 252
5.6 并行流水線 254
5.7 并行搜索 258
5.8 并行排序 260
5.8.1 分離數據相關性:奇偶交換排序 260
5.8.2 改進的插入排序:希爾排序 264
5.9 并行算法:矩陣乘法 268
5.10 準備好了再通知我:網絡NIO 272
5.10.1 基于Socket的服務端多線程模式 273
5.10.2 使用NIO進行網絡編程 278
5.10.3 使用NIO實現客戶端 286
5.11 讀完了再通知我:AIO 288
5.11.1 AIO EchoServer的實現 288
5.11.2 AIO客戶端的實現 291
第6章 Java 8/9/10與并發 294
6.1 Java 8的函數式編程簡介 294
6.1.1 函數作為一等公民 295
6.1.2 無副作用 296
6.1.3 聲明式的編程方式 296
6.1.4 不變的對象 297
6.1.5 易于并行 297
6.1.6 更少的代碼 297
6.2 函數式編程基礎 298
6.2.1 FunctionalInterface注釋 298
6.2.2 接口默認方法 299
6.2.3 lambda表達式 303
6.2.4 方法引用 304
6.3 一步一步走入函數式編程 306
6.4 并行流與并行排序 311
6.4.1 使用并行流過濾數據 311
6.4.2 從集合得到并行流 312
6.4.3 并行排序 312
6.5 增強的Future:CompletableFuture 313
6.5.1 完成了就通知我 313
6.5.2 異步執行任務 314
6.5.3 流式調用 316
6.5.4 CompletableFuture中的異常處理 316
6.5.5 組合多個CompletableFuture 317
6.5.6 支持timeout的CompletableFuture 319
6.6 讀寫鎖的改進:StampedLock 319
6.6.1 StampedLock的使用示例 320
6.6.2 StampedLock的小陷阱 321
6.6.3 有關StampedLock的實現思想 323
6.7 原子類的增強 326
6.7.1 更快的原子類:LongAdder 327
6.7.2 LongAdder功能的增強版:LongAccumulator 334
6.8 ConcurrentHashMap的增強 335
6.8.1 forEach操作 335
6.8.2 reduce操作 335
6.8.3 條件插入 336
6.8.4 search操作 337
6.8.5 其他新方法 338
6.9 發布訂閱模式 338
6.9.1 簡單的發布訂閱模式案例 340
6.9.2 數據處理鏈 342
第7章 使用Akka構建高并發程序 344
7.1 新并發模型:Actor 345
7.2 Akka之Hello World 345
7.3 有關消息投遞的一些說明 348
7.4 Actor的生命周期 350
7.5 監督策略 354
7.6 選擇Actor 359
7.7 消息收件箱(Inbox) 359
7.8 消息路由 361
7.9 Actor的內置狀態轉換 364
7.10 詢問模式:Actor中的Future 367
7.11 多個Actor同時修改數據:Agent 369
7.12 像數據庫一樣操作內存數據:軟件事務內存 372
7.13 一個有趣的例子:并發粒子群的實現 376
7.13.1 什么是粒子群算法 377
7.13.2 粒子群算法的計算過程 377
7.13.3 粒子群算法能做什么 378
7.13.4 使用Akka實現粒子群算法 379
第8章 并行程序調試 388
8.1 準備實驗樣本 388
8.2 正式起航 389
8.3 掛起整個虛擬機 392
8.4 調試進入ArrayList內部 393
第9章 多線程優化示例――Jetty核心代碼分析 397
9.1 Jetty簡介與架構 397
9.2 Jetty服務器初始化 399
9.2.1 初始化線程池 399
9.2.2 初始化ScheduledExecutorScheduler 401
9.2.3 初始化ByteBufferPool 402
9.2.4 維護ConnectionFactory 405
9.2.5 計算ServerConnector的線程數量 406
9.3 啟動Jetty服務器 406
9.3.1 設置啟動狀態 406
9.3.2 注冊ShutdownMonitor 407
9.3.3 計算系統的線程數量 407
9.3.4 啟動QueuedThreadPool 408
9.3.5 啟動Connector 408
9.4 處理HTTP請求 411
9.4.1 Accept成功 411
9.4.2 請求處理 413
實戰Java高并發程序設計(第3版) 作者簡介
葛一鳴:煉數成金特約講師,國家認證系統分析師,獲得Oracle OCP認證。長期從事Java軟件開發工作,對Java程序設計、JVM有深入研究,對設計模式、人工智能、神經網絡、數據挖掘等技術有濃厚興趣,著有《實戰Java虛擬機》一書,目前在Dataguru開設多門課程,包括Java并發、JVM、Git等。
- >
月亮與六便士
- >
羅曼·羅蘭讀書隨筆-精裝
- >
伊索寓言-世界文學名著典藏-全譯本
- >
中國歷史的瞬間
- >
朝聞道
- >
史學評論
- >
伯納黛特,你要去哪(2021新版)
- >
唐代進士錄