買這商品的人也買了...
-
$550$495 -
$580$493 -
$551管理海量數據-壓縮索引和查詢(第2版經典再現全新修訂版) (Managing Gigabytes: Compressing and Indexing Documents and Images, 2/e)
-
$454精通 Android 網絡開發
-
$400$300 -
$659$626 -
$600$474 -
$520$390 -
$880$695 -
$580$458 -
$534$507 -
$800$632 -
$474$450 -
$1,080$713 -
$894$849 -
$534$507 -
$680$612 -
$708$673 -
$352二進制安全基礎
-
$1,200$948 -
$580$458 -
$880$695 -
$800$600 -
$850$638 -
$1,800$1,350
相關主題
商品描述
本書由科大訊飛高級系統架構師撰寫,結合大量原始碼與圖示,簡單易懂;
自頂向下解析JDK、JVM、Linux中的Java線程通訊機制、同步機制、鎖定機制、
原子計數器、線程安全容器、執行緒池的實作原理與應用技巧。
全書共12章,分為三篇。
基礎篇(第1~5章),從Linux的線程基礎講起,重點從JDK、JVM、Linux多個維度講解Java線程的設計、通訊與同步機制,
如記憶體一致性、記憶體屏障、多執行緒間數據通訊、同時控制等核心知識,從而在實際開發中提高程式的效能和穩定性。
進階篇(第6~9章),從CPU的架構講起,重點講解鎖演算法(MCS、CLH、AQS)、Java鎖定機制、原子計數器、
執行緒並發容器、執行緒池的設計原理與實現,以期讓讀者掌握Java執行緒的進階知識,
不僅能開發出高效能的程序,而且遇到問題可以舉一反三,找到最佳方案。
應用篇(第10~11章),詳細講解Java執行緒的常見模型與使用技巧。以電商真實場景為例,從面臨的挑戰、基於Java多執行緒的實作方案與最佳化等角度層層遞進,讓讀者感受真實的Java執行緒「威力」。
最後,總結多執行緒程式設計的常見問題與使用技巧。
目錄大綱
目錄Contents
前言
基礎篇
第1章Linux線程基礎2
1.1 Linux進程2
1.1.1 深入理解進程2
1.1.2 進程描述符3
1.1.3 進程創建6
1.1.4 上下文切換7
1.2進程間通訊7
1.2. 1 訊號8
1.2.2 管道9
1.2.3 共享記憶體9
1.2.4 FIFO佇列9
1.2.5 訊息佇列10
1.2.6 Socket10
1.3 CPU任務調度10
1.3.1 即時進程與普通進程11
1.3.2 即時調度策略11
1.3.3 普通調度策略11
1.3.4 CFS調度演算法11
1.3.5 整體任務調度12
1.4 Linux線程13
1.4.1 Pthread簡介14
1.4.2 線程創建16
1.4.3 終止18
1.5 線程同步:互斥線程量20
1.5.1 建立互斥量21
1.5.2 互斥量解鎖22
1.5.3 mutex範例22
1.6 執行緒同步:條件變數23
1.6.1 建立條件變數23
1.6.2 條件變數等待24
1.6.3 條件變數通知24
1.6.4 條件變數使用範例24
1.7 執行緒同步:信號量25
1.7.1 初始化未命名信號量26
1.7.2 等待一個信號量26
1.7.3 發布一個信號量26
1.8 小結272
章JVM基礎知識28
2.1 Java、JDK、JRE與JVM28
2.2 Java跨平台原理29
2.3 JVM系統架構30
2.3.1 類別載入子系統30
2.3.2 執行時間資料區33
2.3.3 執行引擎35
2.4 JVM與作業系統的執行緒模型36
2.4.1 作業系統的執行緒模型36
2.4.2 JVM的執行緒模型38
2.5 JNI機制39
2.5.1 JNI開發流程40
2.5.2 JNI資料型別轉換41
2.5.3 實作案例43
2.6 小結43
第3章JVM執行緒44
3.1 為什麼需要多執行緒44
3.1.1 CPU存取各元件週期45
3.1.2 多執行緒的出現45
3.2 多執行緒帶來的問題46
3.2.1 CPU快取導致的可見性問題46
3.2.2 執行緒上下文切換帶來的原子性
問題47
3.2.3 最佳化帶來的亂序問題48
3.3 Java記憶體模型與執行緒規格50
3.3.1 變數共享51
3.3.2 變數共享的記憶體可見性51
3.3.3 Happens-Before規則52
3.4 記憶體一致性協定56
3.4.1 CPU快取讀取策略57
3.4.2 CPU快取寫入策略58
3.4.3 MESI協定59
3.5 記憶體屏障61 3.5.1 記憶體讀寫屏障64
3.5.2 記憶體屏障的實作屏障61 3.5.1 記憶體讀寫屏障64
3.5.2 記憶體屏障的實現64
3.5.3 JVM記憶體屏障指令實作65
3.6 JVM的執行緒66
3.7 Java執行緒建立過程68
3.7.1 執行緒建立69
3.7.2 執行緒執行73
3.8 Java執行緒生命週期75
3.8.1 Java執行緒生命週期模型75
3.8. 2 查看執行緒的狀態78
3.9 小結79
第4章JVM執行緒通訊原理80
4.1 ParkEvent原理80
4.1.1 Allocate方法81
4.1.2 Rlease方法81
4.1.3 park方法82
4.1.4 unpark方法83 4.2 Parker 方法83
4.2 Parker
4.2.1 park方法84
4.2.2 unpark方法86
4.3 sleep方法實作原理86
4.3.1 JVM_Sleep函數86
4.3.2 sleep函數87
4.4 ObjectMonitor實現原理88 4.4.1
資料結構結構子
結構89
4.48989. .3 ObjectWaiter原始碼90
4.4.4 TryLock方法91
4.4.5 EnterI方法91
4.4.6 ReenterI方法93
4.4.7 enter方法94
4.4.8 exit方法?95
4.4.9 ExitEpilog方法94 4.4.8 exit方法?95 4.4.9
ExitEpilog方法97 4.55 wa 97
4.5.1 設計原理98
4.5.2 wait方法實現原理100
4.5.3 notify方法實作原理102
4.5.4 notifyAll方法實作原理103
4.6 yield方法實作原理103
4.7 join方法實作原理104