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

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

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

定 價(jià):¥109.00

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

購(gòu)買這本書可以去


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

內(nèi)容簡(jiǎn)介

  本書由科大訊飛高級(jí)系統(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í),從而在實(shí)際開(kāi)發(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)階知識(shí),不僅能開(kāi)發(fā)出高性能的程序,而且遇到問(wèn)題可以舉一反三,找到最佳方案。應(yīng)用篇(第10~11章),詳細(xì)講解Java線程的常見(jiàn)模型與使用技巧。以電商真實(shí)場(chǎng)景為例,從面臨的挑戰(zhàn)、基于Java多線程的實(shí)現(xiàn)方案與優(yōu)化等角度層層遞進(jìn),讓讀者感受真實(shí)的Java線程“威力”。 最后,總結(jié)多線程編程的常見(jiàn)問(wèn)題與使用技巧。

作者簡(jiǎn)介

  儲(chǔ)誠(chéng)益科大訊飛高級(jí)系統(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 信號(hào) 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簡(jiǎn)介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 線程同步:信號(hào)量25
1.7.1 初始化未命名信號(hào)量26
1.7.2 等待一個(gè)信號(hào)量26
1.7.3 發(fā)布一個(gè)信號(hào)量26
1.8 小結(jié)27
第2章 JVM基礎(chǔ)知識(shí)28
2.1 Java、JDK、JRE與JVM28
2.2 Java跨平臺(tái)原理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開(kāi)發(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訪問(wèn)各組件周期45
3.1.2 多線程的出現(xiàn)45
3.2 多線程帶來(lái)的問(wèn)題46
3.2.1 CPU緩存導(dǎo)致的可見(jiàn)性問(wèn)題46
3.2.2 線程上下文切換帶來(lái)的原子性
   問(wèn)題47
3.2.3 優(yōu)化帶來(lái)的亂序問(wèn)題48
3.3 Java內(nèi)存模型與線程規(guī)范50
3.3.1 變量共享51
3.3.2 變量共享的內(nèi)存可見(jiàn)性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)建過(guò)程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 輕量級(jí)鎖的狀態(tài)信息114
5.1.4 重量級(jí)鎖的狀態(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解析
     過(guò)程120
5.3.2 monitorenter指令解析過(guò)程122
5.3.3 monitorexit指令解析過(guò)程123
5.3.4 鎖獲取實(shí)現(xiàn)過(guò)程124
5.3.5 鎖釋放實(shí)現(xiàn)過(guò)程126
5.4 volatile實(shí)現(xiàn)原理128
5.4.1 實(shí)現(xiàn)原理概述129
5.4.2 getfield指令實(shí)現(xiàn)過(guò)程130
5.4.3 putfield指令實(shí)現(xiàn)過(guò)程131
5.5 volatile偽共享132
5.6 CAS硬件同步原語(yǔ)134
5.6.1 CAS硬件原語(yǔ)134
5.6.2 JVM CAS實(shí)現(xiàn)135
5.6.3 ABA問(wèn)題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 無(wú)阻塞對(duì)象方法144
5.9.3 有阻塞對(duì)象方法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.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)