注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計(jì)/管理一本書講透Java線程:原理與實(shí)踐

一本書講透Java線程:原理與實(shí)踐

一本書講透Java線程:原理與實(shí)踐

定 價(jià):¥109.00

作 者: 儲誠益
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787111737261 出版時(shí)間: 2023-11-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書由科大訊飛高級系統(tǒng)架構(gòu)師撰寫,結(jié)合大量源碼與圖示,通俗易懂;自頂向下解析JDK、JVM、Linux中的Java線程通信機(jī)制、同步機(jī)制、鎖機(jī)制、原子計(jì)數(shù)器、線程安全容器、線程池的實(shí)現(xiàn)原理與應(yīng)用技巧。全書共12章,分為三篇?;A(chǔ)篇(第1~5章),從Linux的線程基礎(chǔ)講起,重點(diǎn)從JDK、JVM、Linux多個(gè)維度講解Java線程的設(shè)計(jì)、通信與同步機(jī)制,如內(nèi)存一致性、內(nèi)存屏障、多線程間數(shù)據(jù)通信、并發(fā)控制等核心知識,從而在實(shí)際開發(fā)中提高程序的性能和穩(wěn)定性。進(jìn)階篇(第6~9章),從CPU的架構(gòu)講起,重點(diǎn)講解鎖算法(MCS、CLH、AQS)、Java鎖機(jī)制、原子計(jì)數(shù)器、線程并發(fā)容器、線程池的設(shè)計(jì)原理與實(shí)現(xiàn),以期讓讀者掌握J(rèn)ava線程的進(jìn)階知識,不僅能開發(fā)出高性能的程序,而且遇到問題可以舉一反三,找到最佳方案。應(yīng)用篇(第10~11章),詳細(xì)講解Java線程的常見模型與使用技巧。以電商真實(shí)場景為例,從面臨的挑戰(zhàn)、基于Java多線程的實(shí)現(xiàn)方案與優(yōu)化等角度層層遞進(jìn),讓讀者感受真實(shí)的Java線程“威力”。 最后,總結(jié)多線程編程的常見問題與使用技巧。

作者簡介

  儲誠益科大訊飛高級系統(tǒng)架構(gòu)師,致力于研究下一代工業(yè)互聯(lián)網(wǎng)系統(tǒng)架構(gòu)、人工智能、中小制造企業(yè)數(shù)字化轉(zhuǎn)型。擁有十余年的IT領(lǐng)域工作經(jīng)驗(yàn),曾就職于多家知名IT企業(yè)并負(fù)責(zé)技術(shù)架構(gòu)設(shè)計(jì)和管理工作,積累了豐富的分布式架構(gòu)、大數(shù)據(jù)、云計(jì)算以及大規(guī)模IT系統(tǒng)等的建設(shè)、實(shí)施、咨詢、管理經(jīng)驗(yàn)。

圖書目錄

目  錄  Contents
前言
基礎(chǔ)篇
第1章 Linux線程基礎(chǔ)2
1.1 Linux進(jìn)程2
1.1.1 深入理解進(jìn)程2
1.1.2 進(jìn)程描述符3
1.1.3 進(jìn)程創(chuàng)建6
1.1.4 上下文切換7
1.2 Linux進(jìn)程間通信7
1.2.1 信號 8
1.2.2 管道9
1.2.3 共享內(nèi)存 9
1.2.4 FIFO隊(duì)列 9
1.2.5 消息隊(duì)列 10
1.2.6 Socket10
1.3 CPU任務(wù)調(diào)度10
1.3.1 實(shí)時(shí)進(jìn)程與普通進(jìn)程11
1.3.2 實(shí)時(shí)調(diào)度策略11
1.3.3 普通調(diào)度策略11
1.3.4 CFS調(diào)度算法11
1.3.5 整體任務(wù)調(diào)度12
1.4 Linux線程13
1.4.1 Pthread簡介14
1.4.2 線程創(chuàng)建16
1.4.3 線程終止18
1.5 線程同步:互斥量20
1.5.1 創(chuàng)建互斥量21
1.5.2 互斥量解鎖22
1.5.3 mutex示例22
1.6 線程同步:條件變量23
1.6.1 創(chuàng)建條件變量23
1.6.2 條件變量等待24
1.6.3 條件變量通知24
1.6.4 條件變量使用示例24
1.7 線程同步:信號量25
1.7.1 初始化未命名信號量26
1.7.2 等待一個(gè)信號量26
1.7.3 發(fā)布一個(gè)信號量26
1.8 小結(jié)27
第2章 JVM基礎(chǔ)知識28
2.1 Java、JDK、JRE與JVM28
2.2 Java跨平臺原理29
2.3 JVM系統(tǒng)架構(gòu)30
2.3.1 類加載子系統(tǒng)30
2.3.2 運(yùn)行時(shí)數(shù)據(jù)區(qū)33
2.3.3 執(zhí)行引擎35
2.4 JVM與操作系統(tǒng)的線程模型36
2.4.1 操作系統(tǒng)的線程模型36
2.4.2 JVM的線程模型38
2.5 JNI機(jī)制39
2.5.1 JNI開發(fā)流程40
2.5.2 JNI數(shù)據(jù)類型轉(zhuǎn)換41
2.5.3 實(shí)現(xiàn)案例43
2.6 小結(jié)43
第3章 JVM線程44
3.1 為什么需要多線程44
3.1.1 CPU訪問各組件周期45
3.1.2 多線程的出現(xiàn)45
3.2 多線程帶來的問題46
3.2.1 CPU緩存導(dǎo)致的可見性問題46
3.2.2 線程上下文切換帶來的原子性
   問題47
3.2.3 優(yōu)化帶來的亂序問題48
3.3 Java內(nèi)存模型與線程規(guī)范50
3.3.1 變量共享51
3.3.2 變量共享的內(nèi)存可見性51
3.3.3 Happens-Before規(guī)則52
3.4 內(nèi)存一致性協(xié)議56
3.4.1 CPU緩存讀取策略57
3.4.2 CPU緩存寫入策略58
3.4.3 MESI協(xié)議59
3.5 內(nèi)存屏障61
3.5.1 內(nèi)存讀寫屏障64
3.5.2 內(nèi)存屏障的實(shí)現(xiàn)64
3.5.3 JVM內(nèi)存屏障指令實(shí)現(xiàn)65
3.6 JVM的線程66
3.7 Java線程創(chuàng)建過程68
3.7.1 線程創(chuàng)建69
3.7.2 線程執(zhí)行73
3.8 Java線程生命周期75
3.8.1 Java線程生命周期模型75
3.8.2 查看線程的狀態(tài)78
3.9 小結(jié)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實(shí)現(xiàn)原理84
4.2.1 park方法84
4.2.2 unpark方法86
4.3 sleep方法實(shí)現(xiàn)原理86
4.3.1 JVM_Sleep函數(shù)86
4.3.2 sleep函數(shù)87
4.4 ObjectMonitor實(shí)現(xiàn)原理88
4.4.1 數(shù)據(jù)結(jié)構(gòu)89
4.4.2 ObjectMonitor的構(gòu)造函數(shù)89
4.4.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方法97
4.5 wait與notify方法實(shí)現(xiàn)原理97
4.5.1 設(shè)計(jì)原理98
4.5.2 wait方法實(shí)現(xiàn)原理100
4.5.3 notify方法實(shí)現(xiàn)原理102
4.5.4 notifyAll方法實(shí)現(xiàn)原理103
4.6 yield方法實(shí)現(xiàn)原理103
4.7 join方法實(shí)現(xiàn)原理104
4.7.1 JVM_IsThreadAlive105
4.7.2 ensure_join106
4.8 stop方法實(shí)現(xiàn)原理107
4.8.1 JVM_StopThread107
4.8.2 HAS_PENDING_EXCEPTION108
4.9 interrupt方法實(shí)現(xiàn)原理109
4.10 小結(jié)110
第5章 JVM線程同步機(jī)制111
5.1 Mark Word 111
5.1.1 Mark Word詳解 112
5.1.2 hashCode驗(yàn)證113
5.1.3 輕量級鎖的狀態(tài)信息114
5.1.4 重量級鎖的狀態(tài)信息114
5.2  synchronized設(shè)計(jì)原理115
5.2.1 synchronized的使用116
5.2.2 synchronized的具體設(shè)計(jì)118
5.3 synchronized源碼分析120
5.3.1 ACC_SYNCHRONIZED解析
     過程120
5.3.2 monitorenter指令解析過程122
5.3.3 monitorexit指令解析過程123
5.3.4 鎖獲取實(shí)現(xiàn)過程124
5.3.5 鎖釋放實(shí)現(xiàn)過程126
5.4 volatile實(shí)現(xiàn)原理128
5.4.1 實(shí)現(xiàn)原理概述129
5.4.2 getfield指令實(shí)現(xiàn)過程130
5.4.3 putfield指令實(shí)現(xiàn)過程131
5.5 volatile偽共享132
5.6 CAS硬件同步原語134
5.6.1 CAS硬件原語134
5.6.2 JVM CAS實(shí)現(xiàn)135
5.6.3 ABA問題135
5.7 Unsafe功能介紹136
5.7.1 操作內(nèi)存136
5.7.2 獲取字段內(nèi)存偏移量137
5.7.3 普通字段的讀取與賦值138
5.7.4 volatile字段的讀取與賦值138
5.7.5 CAS操作能力139
5.7.6 線程阻塞與喚醒139
5.7.7 內(nèi)存屏障139
5.8 Unsafe實(shí)現(xiàn)原理140
5.8.1 volatile字段讀取140
5.8.2 volatile字段寫入141
5.8.3 CAS操作能力141
5.8.4 線程阻塞與喚醒142
5.9 LockSupport實(shí)現(xiàn)原理143
5.9.1 Unsafe初始化143
5.9.2 無阻塞對象方法144
5.9.3 有阻塞對象方法144
5.9.4 線程喚醒146
5.10 小結(jié)146
進(jìn)階篇
第6章 Java鎖實(shí)現(xiàn)原理148
6.1 CPU架構(gòu)148
6.1.1 SMP148
6.1.2 NUMA149
6.1.3 SMP與NUMA比較150
6.2 自旋鎖的誕生150
6.2.1 SPIN ON TEST-AND-SET150
6.2.2 TEST-AND

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號