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

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

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

定 價(jià):¥109.00

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

購(gòu)買(mǎi)這本書(shū)可以去


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

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

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

圖書(shū)目錄

目  錄  Contents
前言
基礎(chǔ)篇
第1章 Linux線(xiàn)程基礎(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線(xiàn)程13
1.4.1 Pthread簡(jiǎn)介14
1.4.2 線(xiàn)程創(chuàng)建16
1.4.3 線(xiàn)程終止18
1.5 線(xiàn)程同步:互斥量20
1.5.1 創(chuàng)建互斥量21
1.5.2 互斥量解鎖22
1.5.3 mutex示例22
1.6 線(xiàn)程同步:條件變量23
1.6.1 創(chuàng)建條件變量23
1.6.2 條件變量等待24
1.6.3 條件變量通知24
1.6.4 條件變量使用示例24
1.7 線(xiàn)程同步:信號(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 類(lèi)加載子系統(tǒng)30
2.3.2 運(yùn)行時(shí)數(shù)據(jù)區(qū)33
2.3.3 執(zhí)行引擎35
2.4 JVM與操作系統(tǒng)的線(xiàn)程模型36
2.4.1 操作系統(tǒng)的線(xiàn)程模型36
2.4.2 JVM的線(xiàn)程模型38
2.5 JNI機(jī)制39
2.5.1 JNI開(kāi)發(fā)流程40
2.5.2 JNI數(shù)據(jù)類(lèi)型轉(zhuǎn)換41
2.5.3 實(shí)現(xiàn)案例43
2.6 小結(jié)43
第3章 JVM線(xiàn)程44
3.1 為什么需要多線(xiàn)程44
3.1.1 CPU訪(fǎng)問(wèn)各組件周期45
3.1.2 多線(xiàn)程的出現(xiàn)45
3.2 多線(xiàn)程帶來(lái)的問(wèn)題46
3.2.1 CPU緩存導(dǎo)致的可見(jiàn)性問(wèn)題46
3.2.2 線(xiàn)程上下文切換帶來(lái)的原子性
   問(wèn)題47
3.2.3 優(yōu)化帶來(lái)的亂序問(wèn)題48
3.3 Java內(nèi)存模型與線(xiàn)程規(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緩存寫(xiě)入策略58
3.4.3 MESI協(xié)議59
3.5 內(nèi)存屏障61
3.5.1 內(nèi)存讀寫(xiě)屏障64
3.5.2 內(nèi)存屏障的實(shí)現(xiàn)64
3.5.3 JVM內(nèi)存屏障指令實(shí)現(xiàn)65
3.6 JVM的線(xiàn)程66
3.7 Java線(xiàn)程創(chuàng)建過(guò)程68
3.7.1 線(xiàn)程創(chuàng)建69
3.7.2 線(xiàn)程執(zhí)行73
3.8 Java線(xiàn)程生命周期75
3.8.1 Java線(xiàn)程生命周期模型75
3.8.2 查看線(xiàn)程的狀態(tài)78
3.9 小結(jié)79
第4章 JVM線(xiàn)程通信原理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線(xiàn)程同步機(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 線(xiàn)程阻塞與喚醒139
5.7.7 內(nèi)存屏障139
5.8 Unsafe實(shí)現(xiàn)原理140
5.8.1 volatile字段讀取140
5.8.2 volatile字段寫(xiě)入141
5.8.3 CAS操作能力141
5.8.4 線(xiàn)程阻塞與喚醒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 線(xiàn)程喚醒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 ? 讀書(shū)網(wǎng) m.shuitoufair.cn 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)