Java高并发核心编程 卷2 多线程、锁、JMM、JUC、高并发设计模式 加强版
作 者:尼恩 等 著
定 价:118
出 版 社:清华大学出版社
出版日期:2022年11月01日
页 数:428
装 帧:平装
ISBN:9787302620983
目录
●第1章多线程原理与实战1
1.1两个技术面试故事1
1.2无处不在的进程和线程2
1.2.1进程的基本原理3
1.2.2线程的基本原理4
1.2.3进程与线程的区别7
1.3创建线程的4种方法7
1.3.1Thread类详解8
1.3.2创建一个空线程10
1.3.3线程创建方法一:继承Thread类创建线程类11
1.3.4线程创建方法二:实现Runnable接口创建线程目标类12
1.3.5优雅创建Runnable线程目标类的两种方式14
1.3.6实现Runnable接口的方式创建线程目标类的优缺点16
1.3.7线程创建方法三:使用Callable和FutureTask创建线程20
1.3.8线程创建方法四:通过线程池创建线程25
1.4线程的核心原理28
1.4.1线程的调度与时间片28
1.4.2线程的优先级29
1.4.3线程的生命周期31
1.4.4一个线程状态的简单演示案例33
1.4.5使用Jstack工具查看线程状态35
1.5线程的基本操作36
1.5.1线程名称的设置和获取36
1.5.2线程的sleep操作38
1.5.3线程的interrupt操作39
1.5.4线程的join操作42
1.5.5线程的yield操作46
1.5.6线程的daemon操作48
1.5.7线程状态总结52
1.6线程池原理与实战54
1.6.1JUC的线程池架构54
1.6.2Executors的4种快捷创建线程池的方法56
1.6.3线程池的标准创建方式62
1.6.4向线程池提交任务的两种方式63
1.6.5线程池的任务调度流程66
1.6.6ThreadFactory(线程工厂)68
1.6.7任务阻塞队列70
1.6.8调度器的钩子方法70
1.6.9线程池的拒绝策略72
1.6.10线程池的优雅关闭75
1.6.11Executors快捷创建线程池的潜在问题80
1.7确定线程池的线程数83
1.7.1按照任务类型对线程池进行分类83
1.7.2为IO密集型任务确定线程数84
1.7.3为CPU密集型任务确定线程数86
1.7.4为混合型任务确定线程数87
1.8ThreadLocal原理与实战89
1.8.1ThreadLocal的基本使用89
1.8.2ThreadLocal使用场景91
1.8.3使用ThreadLocal进行线程隔离92
1.8.4使用ThreadLocal进行跨函数数据传递93
1.8.5ThreadLocal内部结构演进94
1.8.6ThreadLocal源码分析96
1.8.7ThreadLocalMap源码分析99
1.8.8ThreadLocal综合使用案例102
第2章Java内置锁的核心原理106
2.1线程安全问题106
2.1.1自增运算不是线程安全的106
2.1.2临界区资源与临界区代码段108
2.2synchronized关键字109
2.2.1synchronized同步方法110
2.2.2synchronized同步块110
2.2.3静态的同步方法112
2.3生产者-消费者问题113
2.3.1生产者-消费者模式113
2.3.2一个线程不安全的实现版本114
2.3.3一个线程安全的实现版本120
2.4Java对象结构与内置锁121
2.4.1Java对象结构121
2.4.2MarkWord的结构信息124
2.4.3使用JOL工具查看对象的布局126
2.4.4大小端问题129
2.4.5无锁、偏向锁、轻量级锁和重量级锁131
2.5偏向锁的原理与实战132
2.5.1偏向锁的核心原理132
2.5.2偏向锁的演示案例133
2.5.3偏向锁的膨胀和撤销136
2.5.4全局安全点原理和偏向锁撤销的性能问题137
2.6轻量级锁的原理与实战139
2.6.1轻量级锁的核心原理139
2.6.2轻量级锁的案例演示141
2.6.3轻量级锁的分类143
2.6.4轻量级锁的膨胀144
2.7重量级锁的原理与实战144
2.7.1重量级锁的核心原理144
2.7.2重量级锁的开销146
2.7.3重量级锁的演示案例147
2.8偏向锁、轻量级锁与重量级锁的对比149
2.9线程间通信150
2.9.1线程间通信定义150
2.9.2低效的线程轮询150
2.9.3wait方法、notify方法的原理152
2.9.4“等待-通知”通信模式演示案例154
2.9.5生产者-消费者之间的线程间通信156
2.9.6需要在synchronized同步块的内部使用wait和notify158
第3章CAS原理与JUC原子类160
3.1什么是CAS160
●
●
3.1.1Unsafe类中的CAS方法160
●
●
……
内容介绍
本书聚焦Java高并发编程基础知识,介绍Java多线程、线程池、内置锁、JMM、CAS、JUC、高并发设计模式等并发编程方面的核心原理和实战知识。
本书共10章。第1、2章剖析多线程、线程池的核心原理和实战应用,揭秘线程安全问题和Java内置锁的核心原理。第3、4章讲解CAS原理与JUC原子类、JMM的核心原理,揭秘CAS操作的弊端和两类规避措施,以及Java内存可见性和volatile关键字的底层知识。第5章讲解JUC显式锁的原理和各种显式锁的使用。第6章阐述JUC高并发的基础设施——AQS抽象同步器的核心原理。第7章介绍JUC容器类。第8~10章介绍常见的Java高并发设计模式的原理和使用。
本书既可以作为Java工程师、架构师的编程参考书,又可以作为参加互联网大厂面试、笔试的人员的学习参考书。
尼恩 等 著
"尼 恩
中南大学硕士,资深系统架构师、IT领域资深作家、有名博主、从业十余年,先后在华为、神州数码等公司从事技术研发、架构工作。长期专注于高性能Web平台、高性能通信、高性能搜索、数据挖掘等领域的3高架构研究、架构实操、核心代码开发工作,以及核心中间件、底层源码研究工作,负责过多个亿级RMB智慧城市平台、大型政务平台、数据中台架构、技术中台架构工作,发起的3高研究社群“疯狂创客圈”目前有研究人员1100多人。
唐 欢
计算机专业硕士,资深系统架构师、资深博主,拥有多年Java开发和系统架构经验,多年敏捷开发的项目管理经验,现在国内科技企业担任系统架构师一职,主持企业软件的系统架构和......