買這商品的人也買了...
-
$580$452 -
$359$341 -
$327圖解網絡硬件
-
$580$493 -
$403深入分析 Java Web 技術內幕 (修訂版)
-
$880$695 -
$780$616 -
$454大話 Java 性能優化
-
$403Java 併發編程:核心方法與框架 (Java Concurrent Programming Core Method and Frameworks)
-
$352自己動手寫Java虛擬機
-
$229進化從孤膽極客到高效團隊 (Debugging Teams Better Productivity through Collaboration)
-
$480$379 -
$500$390 -
$648$616 -
$505NIO 與 Socket 編程技術指南
-
$714$678 -
$894$849 -
$774$735 -
$620$490 -
$500$390 -
$1,080$820 -
$479$455 -
$1,080$713 -
$720$562 -
$680$537
相關主題
商品描述
<內容簡介>
併發編程領域的扛鼎之作,作者是阿裡和1號店的資深Java技術專家,對併發編程有非常深入的研究,方騰飛、魏鵬、程曉明編著的《Java併發編程的藝術》是他們多年一線開發經驗的結晶。本書的部分內容在出版早期發表在Java併發編程網和InfoQ等技術社區,得到了非常高的評價。它選取了Java併發編程中最核心的技術進行講解,從JDK源碼、JVM、CPU等多角度全面剖析和講解了Java併發編程的框架、工具、原理和方法,對Java併發編程進行了最為深入和透徹的闡述。
內容涵蓋Java併發編程機制的底層實現原理、Java內存模型、Java併發編程基礎、Java中的鎖、併發容器和框架、原子類、併發工具類、線程池、Executor框架等主題,每個主題都做了深入的講解,同時通過實例介紹瞭如何應用這些技術。
<章節目錄>
前言
第1章 併發編程的挑戰
1.1 上下文切換
1.1.1 多線程一定快嗎
1.1.2 測試上下文切換次數和時長
1.1.3 如何減少上下文切換
1.1.4 減少上下文切換實戰
1.2 死鎖
1.3 資源限制的挑戰
1.4 本章小結
第2章 Java併發機制的底層實現原理
2.1 volatile的應用
2.2 synchronized的實現原理與應用
2.2.1 Java對象頭
2.2.2 鎖的升級與對比
2.3 原子操作的實現原理
2.4 本章小結
第3章 Java內存模型
3.1 Java內存模型的基礎
3.1.1 併發編程模型的兩個關鍵問題
3.1.2 Java內存模型的抽象結構
3.1.3 從源代碼到指令序列的重排序
3.1.4 併發編程模型的分類
3.1.5 happens-before簡介
3.2 重排序
3.2.1 數據依賴性
3.2.2 as-if-serial語義
3.2.3 程序順序規則
3.2.4 重排序對多線程的影響
3.3 順序一致性
3.3.1 數據競爭與順序一致性
3.3.2 順序一致性內存模型
3.3.3 同步程序的順序一致性效果
3.3.4 未同步程序的執行特性
3.4 volatile的內存語義
3.4.1 volatile的特性
3.4.2 volatile寫-讀建立的happens-before關係
3.4.3 volatile寫-讀的內存語義
3.4.4 volatile內存語義的實現
3.4.5 JSR-133為什麼要增強volatile的內存語義
3.5 鎖的內存語義
3.5.1 鎖的釋放-獲取建立的
happens-before關係
3.5.2 鎖的釋放和獲取的內存語義
3.5.3 鎖內存語義的實現
3.5.4 concurrent包的實現
3.6 final域的內存語義
3.6.1 final域的重排序規則
3.6.2 寫final域的重排序規則
3.6.3 讀final域的重排序規則
3.6.4 final域為引用類型
3.6.5 為什麼final引用不能從構造函數內「溢出」
3.6.6 final語義在處理器中的實現
3.6.7 JSR-133為什麼要增強final的語義
3.7 happens-
3.7.1 JMM的設計
3.7.2 happens-before的定義
3.7.3 happens-before規則
3.8 雙重檢查鎖定與延遲初始化
3.8.1 雙重檢查鎖定的由來
3.8.2 問題的根源
3.8.3 基於volatile的解決方案
3.8.4 基於類初始化的解決方案
3.9 Java內存模型綜述
3.9.1 處理器的內存模型
3.9.2 各種內存模型之間的關係
3.9.3 JMM的內存可見性保證
3.9.4 JSR-133對舊內存模型的修補
3.10 本章小結
第4章 Java併發編程基礎
4.1 線程簡介
4.1.1 什麼是線程
4.1.2 為什麼要使用多線程
4.1.3 線程優先級
4.1.4 線程的狀態
4.1.5 Daemon線程
4.2 啟動和終止線程
4.2.1 構造線程
4.2.2 啟動線程
4.2.3 理解中斷
4.2.4 過期的suspend()、resume()和
4.2.5 安全地終止線程
4.3 線程間通信
4.3.1 volatile和synchronized關鍵字
4.3.2 等待/通知機制
4.3.3 等待/通知的經典範式
4.3.4 管道輸入/輸出流
4.3.5 Thread.join()的使用
4.3.6 ThreadLocal的使用
4.4 線程應用實例
4.4.1 等待超時模式
4.4.2 一個簡單的數據庫連接池示例
4.4.3 線程池技術及其示例
4.4.4 一個基於線程池技術的簡單Web服務器
4.5 本章小結
第5章 Java中的鎖
5.1 Lock接口
5.2 隊列同步器
5.2.1 隊列同步器的接口與示例
5.2.2 隊列同步器的實現分析
5.3 重入鎖
5.4 讀寫鎖
5.4.1 讀寫鎖的接口與示例
5.4.2 讀寫鎖的實現分析
5.5 LockSupport工具
5.6 Condition接口
5.6.1 Condition接口與示例
5.6.2 Condition的實現分析
5.7 本章小結
第6章 Java併發容器和框架
6.1 ConcurrentHashMap的實現原理與使用
6.1.1 為什麼要使用ConcurrentHa
6.1.2 ConcurrentHashMap的結構
6.1.3 ConcurrentHashMap的初始化
6.1.4 定位Se
6.1.5 ConcurrentHashMap的操作
6.2 ConcurrentLinked
6.2.1 ConcurrentLinkedQueue的結構
6.2.2 入隊列
6.2.3 出隊列
6.3 Java中的阻塞隊列
6.3.1 什麼是阻塞隊列
6.3.2 Java里的阻塞隊列
6.3.3 阻塞隊列的實現原理
6.4 Fork/Join框架
6.4.1 什麼是Fork/Join框架
6.4.2 工作竊取演算法
6.4.3 Fork/Join框架的設計
6.4.4 使用Fork/Join框架
6.4.5 Fork/Join框架的異常處理
6.4.6 Fork/Join框架的實現原理
6.5 本章小結
第7章 Java中的13個原子操作類
7.1 原子更新基本類型類
7.2 原子更新數組
7.3 原子更新引用類型
7.4 原子更新字段類
7.5 本章小結
第8章 Java中的併發工具類
8.1 等待多線程完成的CountDownL
8.2 同步屏障CyclicBar
8.2.1 CyclicBarrier簡介
8.2.2 CyclicBarrier的應用場景
8.2.3 CyclicBarrier和CountDownLatch的區別
8.3 控制併發線程數的Semap
8.4 線程間交換數據的Excha
8.5 本章小結
第9章 Java中的線程池
9.1 線程池的實現原理
9.2 線程池的使用
9.2.1 線程池的創建
9.2.2 向線程池提交任務
9.2.3 關閉線程池
9.2.4 合理地配置線程池
9.2.5 線程池的監控
9.3 本章小結
第10章 Executor框架
10.1 Executor框架簡介
10.1.1 Executor框架的兩級調度模型
10.1.2 Executor框架的結構與成員
10.2 ThreadPoolExecutor詳解
10.2.1 FixedThreadPool詳解
10.2.2 SingleThreadExecutor詳解
10.2.3 CachedThreadPool詳解
10.3 ScheduledThreadPoolExecutor詳解
10.3.1 ScheduledThreadPoolExecutor的運行機制
10.3.2 ScheduledThreadPoolExecutor的實現
10.4 FutureTask詳解
10.4.1 FutureTask簡介
10.4.2 FutureTask的使用
10.4.3 FutureTask的實現
10.5 本章小結
第11章 Java併發編程實踐
11.1 生產者和消費者模式
11.1.1 生產者消費者模式實戰
11.1.2 多生產者和多消費者場景
11.1.3 線程池與生產消費者模式
11.2 線上問題定位
11.3 性能測試
11.4 異步任務池
11.5 本章小結
<作者介紹>
方騰飛//魏鵬//程曉明