買這商品的人也買了...
-
人月神話:軟體專案管理之道 (20 週年紀念版)(The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, 2/e)$480$379 -
Java 8 Lambdas 技術手冊 (Java 8 Lambdas: Pragmatic Functional Programming)$480$379 -
機器學習$648$616 -
$774揭秘 Java 虛擬機 : JVM 設計原理與實現 -
Java 9 模組化|可維護應用程式的開發模式與實務 (Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications)$580$458 -
$564從零開始學架構:照著做,你也能成為架構師 -
GraphQL 學習手冊 (Learning GraphQL : Declarative Data Fetching for Modern Web Apps)$520$411 -
$422JVM G1 源碼分析和調優 -
$534實戰 Java 虛擬機 — JVM 故障診斷與性能優化, 2/e -
$654全棧技能修煉:使用 Angular 和 SpringBoot 打造全棧應用 -
Spring Cloud:極致精巧的微服務架構開發技術 (舊名: 小而美而精的微服務:使用Spring Cloud)$620$527 -
圖形演算法|Apache Spark 與 Neo4j 實務範例 (Graph Algorithms)$580$458 -
$517Spring Boot 實戰派 -
機器學習的數學基礎 : AI、深度學習打底必讀$580$458 -
大數據資料可視化:Python QT GUI 程式設計$880$695 -
380個精選實例:一步步昇華成 .NET Core 大內高手$880$695 -
Python GUI 程式設計:PyQt5 實戰 (暢銷回饋版)$550$429 -
$534超大流量分佈式系統架構解決方案:人人都是架構師2.0 -
精通機器學習|使用 Scikit-Learn , Keras 與 TensorFlow, 2/e (Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2/e)$1,200$948 -
機器學習|特徵工程 (Feature Engineering for Machine Learning)$520$411 -
深度學習的數學:用數學開啟深度學習的大門$500$390 -
$507深入理解 jvm 字節碼 -
$407Java 修煉指南:高頻源碼解析 -
$534Java 編程方法論:響應式 Spring Reactor 3 設計與實現 -
高生產力軟體開發實務|以 Java 專案驅動的基礎指南 (Real-World Software Development)$480$379
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$576 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書全面而係統地剖析了Java Concurrent包中的每一個部分,對並發的實現原理進行了深入的探討。
全書分為8章,第1章從基礎的多線程知識講起,釐清多線程中容易誤解的知識點,
探究背後的原理,包括內存重排序、happen-before、內存屏障等;
第2~8章,從簡單到復雜,逐個剖析Concurrent包的每個部分,包括原子類、鎖、
同步工具類、並發容器、線程池、ForkJoinPool和CompletableFuture。
本書適合有一定Java開發經驗的工程師、架構師閱讀。
通過閱讀本書,讀者可以對多線程編程形成一個“深刻而直觀”的認識,而不是僅僅停留在概念和理論層面。
作者簡介
餘春龍
中科院軟件所計算機碩士畢業。
熱衷於高並發高可用架構、業務建模、領域驅動設計,在十年的工作中,
經歷過遊戲、社交、廣告、電商等各種類型的項目,積累了較豐富的工程經驗。
目錄大綱
第1章多線程基礎
1.1 線程的優雅關閉
1.1.1 stop與destory函數
1.1.2 守護線程
1.1.3 設置關閉的標誌位
1.2 InterruptedException與interrupt()函數
1.2.1 什麼情況下會拋出Interrupted異常
1.2.2 輕量級阻塞與重量級阻塞
1.2.3 t.isInterrupted()與Thread.interrupted()的區別
1.3 synchronized關鍵字
1.3.1 鎖的對像是什麼
1.3.2 鎖的本質是什麼
1.3.3 synchronized實現原理
1.4 wait與notify
1.4.1 生產者?消費者模型
1.4.2 為什麼必須和synchronized一起使用
1.4.3 為什麼wait()的時候必須釋放鎖
1.4 wait()與notify()的問題
1.5 volatile關鍵字
1.5.1 64位寫入的原子性(Half Write)
1.5.2 內存可見性
1.5.3 重排序:DCL問題
1.6 JMM與happen-before
1.6.1 為什麼會存在“內存可見性”問題
1.6.2 重排序與內存可見性的關係
1.6.3 as-if-serial語義
1.6.4 happen-before是什麼
1.6.5 happen-before的傳遞性
1.6.6 C++中的volatile關鍵字
1.6.7 JSR-133對volatile語義的增強
1.7 內存屏障
1.7.1 Linux中的內存屏障
1.7.2 JDK中的內存屏障
1.7.3 volatile實現原理
1.8 final關鍵字
1.8.1 構造函數溢出問題
1.8.2 final的happen-before語義
1.8.3 happen-before規則總結
1.9 綜合應用:無鎖編程
1.9.1 一寫一讀的無鎖隊列:內存屏障
1.9.2 一寫多讀的無鎖隊列:volatile關鍵字
1.9.3 多寫多讀的無鎖隊列:CAS
1.9.4 無鎖棧
1.9.5 無鎖鍊錶
第2章Atomic類
2.1 AtomicInteger和AtomicLong
2.1.1 悲觀鎖與樂觀鎖
2.1.2 Unsafe 的CAS詳解
2.1.3 自旋與阻塞
2.2 AtomicBoolean和AtomicReference
2.2.1 為什麼需要AtomicBoolean
2.2.2 如何支持boolean和double類型
2.3 AtomicStampedReference和AtomicMarkable Reference
2.3.1 ABA問題與解決辦法
2.3.2 為什麼沒有AtomicStampedInteger或AtomictStampedLong
2.3.3 AtomicMarkableReference
2.4 AtomicIntegerFieldUpdater、AtomicLongFieldUpdater和AtomicReferenceField Updater
2.4.1 為什麼需要AtomicXXXFieldUpdater
2.4.2 限制條件
2.5 AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray
2.5.1 使用方式
2.5.2 實現原理
2.6 Striped64與LongAdder
2.6.1 LongAdder原理
2.6.2 最終一致性
2.6.3 偽共享與緩存行填充
2.6.4 LongAdder核心實現
2.6.5 LongAccumulator
2.6.6 DoubleAdder與DoubleAccumulator
第3章Lock與Condition
3.1 互斥鎖
3.1.1 鎖的可重入性
3.1.2 類繼承層次
3.1.3 鎖的公平性vs.非公平性
3.1.4 鎖實現的基本原理
3.1.5 公平與非公平的lock()實現差異
3.1.6 阻塞隊列與喚醒機制
3.1.7 unlock()實現分析
3.1.8 lockInterruptibly()實現分析
3.1.9 tryLock()實現分析
3.2 讀寫鎖
3.2.1 類繼承層次
3.2.2 讀寫鎖實現的基本原理
3.2.3 AQS的兩對模板方法
3.2.4 WriteLock公平vs.非公平實現
3.2.5 ReadLock公平vs.非公平實現
3.3 Condition
3.3.1 Condition與Lock的關係
3.3.2 Condition的使用場景
3.3.3 Condition實現原理
3.3.4 await()實現分析
3.3.5 awaitUninterruptibly()實現分析
3.3.6 notify()實現分析
3.4 StampedLock
3.4.1 為什麼引入StampedLock
3.4.2 使用場景
3.4.3 “樂觀讀”的實現原理
3.4.4 悲觀讀/寫:“阻塞”與“自旋”策略實現差異
第4章同步工具類
4.1 Semaphore
4.2 CountDownLatch
4.2.1 CountDownLatch使用場景
4.2.2 await()實現分析
4.2.3 countDown()實現分析
4.3 CyclicBarrier
4.3.1 CyclicBarrier使用場景
4.3.2 CyclicBarrier實現原理
4.4 Exchanger
4.4.1 Exchanger使用場景
4.4.2 Exchanger 實現原理
4.4.3 exchange(V x)實現分析
4.5 Phaser
4.5.1 用Phaser替代CyclicBarrier和CountDownLatch
4.5.2 Phaser新特性
4.5.3 state變量解析
4.5.4 阻塞與喚醒(Treiber Stack)
4.5.5 arrive()函數分析
4.5.6 awaitAdvance()函數分析
第5章並發容器
5.1 BlockingQueue
5.1.1 ArrayBlockingQueue
5.1.2 LinkedBlockingQueue
5.1.3 PriorityBlockingQueue
5.1.4 DelayQueue
5.1.5 SynchronousQueue
5.2 BlockingDeque
5.3 CopyOnWrite
5.3.1 CopyOnWriteArrayList
5.3.2 CopyOnWriteArraySet
5.4 ConcurrentLinkedQueue/ Deque
5.5 ConcurrentHashMap
5.5.1 JDK 7中的實現方式
5.5.2 JDK 8中的實現方式
5.6 ConcurrentSkipListMap/Set
5.6.1 ConcurrentSkipListMap
5.6.2 ConcurrentSkipListSet
第6章線程池與Future
6.1 線程池的實現原理
6.2 線程池的類繼承體系
6.3 ThreadPoolExecutor
6.3.1 核心數據結構
6.3.2 核心配置參數解釋
6.3.3 線程池的優雅關閉
6.3.4 任務的提交過程分析
6.3.5 任務的執行過程分析
6.3.6 線程池的4種拒絕策略
6.4 Callable與Future
6.5 ScheduledThreadPool Executor
6.5.1 延遲執行和周期性執行的原理
6.5.2 延遲執行
6.5.3 週期性執行
6.6 Executors工具類
第7章ForkJoinPool
7.1 ForkJoinPool用法
7.2 核心數據結構
7.3 工作竊取隊列
7.4 ForkJoinPool狀態控制
7.4.1 狀態變量ctl解析
7.4.2 阻塞棧Treiber Stack
7.4.3 ctl變量的初始值
7.4.4 ForkJoinWorkerThread狀態與個數分析
7.5 Worker線程的阻塞-喚醒機制
7.5.1 阻塞–入棧
7.5.2 喚醒–出棧
7.6 任務的提交過程分析
7.6.1 內部提交任務pushTask
7.6.2 外部提交任務addSubmission
7.7 工作竊取算法:任務的執行過程分析
7.7.1 順序鎖SeqLock
7.7.2 scanGuard解析
7.8 ForkJoinTask的fork/join
7.8.1 fork
7.8.2 join的層層嵌套
7.9 ForkJoinPool的優雅關閉
7.9.1 關鍵的terminate變量
7.9.2 shutdown()與shutdownNow()的區別
第8章CompletableFuture
8.1 CompletableFuture用法
8.1.1 最簡單的用法
8.1.2 提交任務:runAsync與supplyAsync
8.1.3 鍊式的CompletableFuture:thenRun、thenAccept和thenApply
8.1.4 CompletableFuture的組合:thenCompose與thenCombine
8.1.5 任意個CompletableFuture的組合
8.2 四種任務原型
8.3 CompletionStage接口
8.4 CompletableFuture內部原理
8.4.1 CompletableFuture的構造:ForkJoinPool
8.4.2 任務類型的適配
8.4.3 任務的鍊式執行過程分析
8.4.4 thenApply與thenApplyAsync的區別
8.5 任務的網狀執行:有向無環圖
8.6 allOf內部的計算圖分析
