• 深入理解高并发编程:核心原理与案例实战
21年品牌 40万+商家 超1.5亿件商品

深入理解高并发编程:核心原理与案例实战

全新正版 急速发货

63.3 4.9折 129 全新

库存4件

天津武清
认证卖家担保交易快速发货售后保障

作者冰河

出版社电子工业出版社

ISBN9787121434693

出版时间2022-06

装帧平装

开本其他

定价129元

货号29415228

上书时间2024-12-25

当科图书专营店

五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
导语摘要
本书从实际需求出发,全面细致地介绍了高并发编程的基础知识、核心原理、实战案例和系统架构等内容。通过阅读和学习本书,读者可以对高并发编程有更加全面、深入、透彻的理解,提高对高并发编程问题的处理能力和项目实战能力,并站在更高的层面解决高并发编程系统架构问题。

商品简介

本书从实际需求出发,全面细致地介绍了高并发编程的基础知识、核心原理、实战案例和系统架构等内容。通过阅读和学习本书,读者可以对高并发编程有更加全面、深入、透彻的理解,提高对高并发编程问题的处理能力和项目实战能力,并站在更高的层面解决高并发编程系统架构问题。

作者简介


目录
第1篇  基础知识

第1章  操作系统线程调度2

1.1  冯·诺依曼体系结构2

1.1.1  概述2

1.1.2  计算机五大组成部分3

1.2  CPU架构5

1.2.1  CPU的组成部分5

1.2.2  CPU逻辑结构6

1.2.3  单核CPU的不足8

1.2.4  多核CPU架构8

1.2.5  多CPU架构10

1.3  操作系统线程11

1.3.1  用户级线程11

1.3.2  内核级线程12

1.3.3  混合级线程14

1.4  Java线程与操作系统线程的关系15

1.5  本章总结16

第2章  并发编程概述17

2.1  并发编程的基本概念17

2.1.1  程序17

2.1.2  进程与线程17

2.1.3  线程组18

2.1.4  用户线程与守护线程19

2.1.5  并行与并发20

2.1.6  同步与异步21

2.1.7  共享与独享21

2.1.8  临界区22

2.1.9  阻塞和非阻塞22

2.2  并发编程的风险22

2.2.1  安全性问题22

2.2.2  活跃性问题23

2.2.3  性能问题24

2.3  并发编程中的锁24

2.3.1  悲观锁与乐观锁24

2.3.2  公平锁与非公平锁25

2.3.3  独占锁与共享锁26

2.3.4  可重入锁与不可重入锁26

2.3.5  可中断锁与不可中断锁26

2.3.6  读/写锁27

2.3.7  自旋锁27

2.3.8  死锁、饥饿与活锁27

2.4  本章总结28

第2篇  核心原理

第3章  并发编程的三大核心问题30

3.1  分工问题30

3.1.1  类比现实案例30

3.1.2  并发编程中的分工32

3.2  同步问题32

3.2.1  类比现实案例33

3.2.2  并发编程中的同步33

3.3  互斥问题35

3.3.1  类比现实案例35

3.3.2  并发编程中的互斥35

3.4  本章总结36

第4章  并发编程的本质问题37

4.1  计算机的核心矛盾37

4.1.1  核心矛盾概述37

4.1.2  CPU如何解决核心矛盾38

4.1.3  操作系统如何解决核心矛盾38

4.1.4  编译程序如何解决核心矛盾38

4.1.5  引发的问题39

4.2  原子性39

4.2.1  原子性概述39

4.2.2  原子性问题41

4.2.3  Java中的原子性问题42

4.2.4  原子性问题总结46

4.3  可见性46

4.3.1  可见性概述46

4.3.2  可见性问题47

4.3.3  Java中的可见性问题49

4.3.4  可见性问题总结51

4.4  有序性51

4.4.1  有序性概述51

4.4.2  有序性问题52

4.4.3  Java中的有序性问题53

4.4.4  有序性问题总结56

4.5  解决方案57

4.5.1  原子性问题解决方案57

4.5.2  可见性与有序性问题解决方案57

4.6  本章总结58

第5章  原子性的核心原理59

5.1  原子性原理59

5.2  处理器保证原子性60

5.2.1  CPU保证基本内存操作的原子性60

5.2.2  总线锁保证原子性60

5.2.3  缓存锁保证原子性62

5.3  互斥锁保证原子性62

5.3.1  互斥锁模型62

5.3.2  优化后的互斥锁模型63

5.4  CAS保证原子性64

5.5  本章总结64

第6章  可见性与有序性核心原理65

6.1  CPU多级缓存架构65

6.1.1  CPU为何使用多级缓存架构65

6.1.2  CPU多级缓存架构原理66

6.1.3  CPU的计算流程67

6.2  缓存一致性68

6.2.1  什么是缓存一致性68

6.2.2  缓存一致性协议69

6.2.3  MESI协议缓存状态70

6.2.4  MESI协议的状态转换70

6.2.5  MESI协议带来的问题76

6.3  伪共享76

6.3.1  伪共享的概念76

6.3.2  伪共享产生的场景77

6.3.3  如何解决伪共享问题77

6.4  volatile核心原理78

6.4.1  保证可见性核心原理78

6.4.2  保证有序性核心原理79

6.4.3  volatile的局限性81

6.5  内存屏障82

6.5.1  编译器重排序82

6.5.2  CPU重排序83

6.5.3  as-if-serial原则83

6.5.4  计算机硬件实现的内存屏障84

6.6  Java内存模型84

6.6.1  Java内存模型的概念85

6.6.2  Java内存模型的八大操作85

6.6.3  Java内存模型解决可见性与有序性问题87

6.7  Happens-Before原则90

6.7.1  Happens-Before原则概述90

6.7.2  程序次序原则90

6.7.3  volatile变量原则91

6.7.4  传递原则91

6.7.5  锁定原则91

6.7.6  线程启动原则92

6.7.7  线程终结原则93

6.7.8  线程中断原则93

6.7.9  对象终结原则94

6.8  本章总结95

第7章  synchronized核心原理96

7.1  synchronized用法96

7.1.1  同步实例方法97

7.1.2  同步静态方法98

7.1.3  同步代码块99

7.2  Java对象结构102

7.2.1  对象结构总览102

7.2.2  对象头103

7.2.3  实例数据103

7.2.4  对齐填充103

7.3  Java对象头104

7.3.1  Mark Word104

7.3.2  类型指针106

7.3.3  数组长度106

7.4  使用JOL查看对象信息107

7.4.1  引入JOL环境依赖107

7.4.2  打印对象信息107

7.4.3  打印对象锁状态109

7.5  synchronized核心原理115

7.5.1  synchronized底层原理115

7.5.2  Monitor锁原理116

7.5.3  反编译synchronized方法118

7.5.4  反编译synchronized代码块119

7.6  偏向锁121

7.6.1  偏向锁核心原理122

7.6.2  偏向锁的撤销122

7.6.3  偏向锁案例123

7.7  轻量级锁124

7.7.1  轻量级锁核心原理124

7.7.2  轻量级锁案例126

7.8  重量级锁127

7.8.1  重量级锁核心原理127

7.8.2  重量级锁案例127

7.9  锁升级的过程129

7.10  锁消除130

7.11  本章总结131

第8章  AQS核心原理132

8.1  AQS核心数据结构132

8.1.1  AQS数据结构原理132

8.1.2  AQS内部队列模式133

8.2  AQS底层锁的支持134

8.2.1  核心状态位134

8.2.2  核心节点类135

8.2.3  独占锁模式137

8.2.4  共享锁模式142

8.3  本章总结145

第9章  Lock锁核心原理146

9.1  显示锁原理146

9.2  公平锁与非公平锁原理148

9.2.1  公平锁原理148

9.2.2  ReentrantLock中的公平锁149

9.2.3  公平锁实战153

9.2.4  非公平锁原理154

9.2.5  ReentrantLock中的非公平锁156

9.2.6  非公平锁实战159

9.3  悲观锁与乐观锁原理159

9.3.1  悲观锁原理160

9.3.2  悲观锁实战160

9.3.3  乐观锁原理162

9.3.4  乐观锁实战162

9.4  可中断锁与不可中断锁原理163

9.4.1  可中断锁原理163

9.4.2  可中断锁实战164

9.4.3  不可中断锁原理166

9.4.4  不可中断锁实战166

9.5  排他锁与共享锁原理167

9.5.1  排他锁原理167

9.5.2  排他锁实战167

9.5.3  共享锁原理169

9.5.4  共享锁实战169

9.6  可重入锁原理170

9.6.1  可重入锁原理170

9.6.2  可重入锁实战172

9.7  读/写锁原理175

9.7.1  读/写锁原理175

9.7.2  ReadWriteLock读/写锁176

9.7.3  ReadWriteLock锁降级177

9.7.4  StampedLock读/写锁178

9.7.5  StampedLock锁的升级与降级179

9.7.6  读/写锁实战182

9.8  LockSupport原理185

9.8.1  LockSupport原理185

9.8.2  LockSupport实战185

9.9  本章总结187

第10章  CAS核心原理188

10.1  CAS的基本概念188

10.2  CAS的核心类Unsafe189

10.2.1  Unsafe类的核心方法190

10.2.2  Unsafe类实战192

10.3  使用CAS实现count  194

10.3.1  案例分析194

10.3.2  程序实现194

10.3.3  测试程序198

10.4  ABA问题199

10.4.1  ABA问题概述199

10.4.2  ABA问题解决方案200

10.4.3  Java如何解决ABA问题200

10.5  本章总结202

第11章  死锁的核心原理203

11.1  死锁的基本概念203

11.2  死锁的分析204

11.2.1  线程不安全204

11.2.2  串行执行206

11.2.3  发生死锁208

11.3  形成死锁的必要条件210

11.4  死锁的预防210

11.5  本章总结216

第12章  锁优化217

12.1  缩小锁的范围217

12.2  减小锁的粒度219

12.3  锁分离220

12.4  锁分段221

12.5  锁粗化221

12.6  避免热点区域问题222

12.7  独占锁的替换方案223

12.8  其他优化方案223

12.9  本章总结223

第13章  线程池核心原理224

13.1  线程池的核心状态224

13.1.1  核心状态说明224

13.1.2  核心状态的流转过程225

13.2  线程池的创建方式227

13.2.1  通过Executors类创建线程池227

13.2.2  通过ThreadPoolExecutor类创建线程池229

13.2.3  通过ForkJoinPool类创建线程池232

13.2.4  通过ScheduledThreadPoolExecutor类创建线程池234

13.3  线程池执行任务的核心流程235

13.3.1  执行任务的流程235

13.3.2  拒绝策略237

13.4  线程池的关闭方式238

13.4.1  shutdown()方法238

13.4.2  shutdownNow()方法238

13.5  如何确定线程数238

13.5.1  CPU密集型程序238

13.5.2  I/O密集型程序239

13.6  本章总结239

第14章  ThreadLocal核心原理240

14.1  ThreadLocal的基本概念240

14.2  ThreadLocal的使用案例241

14.3  ThreadLocal的核心原理244

14.3.1  Thread类源码244

14.3.2  set()方法244

14.3.3  get()方法245

14.3.4  remove()方法247

14.4  ThreadLocal变量的不继承性247

14.5  InheritableThreadLocal的使用案例249

14.6  InheritableThreadLocal的核心原理250

14.7  本章总结253
<

内容摘要
本书从实际需求出发,全面细致地介绍了高并发编程的基础知识、核心原理、实战案例和系统架构等内容。通过阅读和学习本书,读者可以对高并发编程有更加全面、深入、透彻的理解,提高对高并发编程问题的处理能力和项目实战能力,并站在更高的层面解决高并发编程系统架构问题。

主编推荐


媒体评论
"冰河是CSDN的专家博主,多年来坚持在CSDN输出高质量技术文章。当今开发者的技术栈和开发模式都在走向云原生,云原生技术的核心是分布式系统。冰河多年来研究高并发和分布式技术,这次出版的书籍《深入理解高并发编程:核心原理与案例实战》从操作系统到JVM,再到JDK中的JUC,对并发编程的原理和本质问题进行了详细的剖析;对于操作系统线程调度、Java中各类锁和线程池的核心原理与实现细节、CAS问题、ABA问题等都有详细的阐述;同时结合分布式锁和电商等热门高并发业务场景对高并发系统的设计进行了深度解密,是难得的这国内一领域高质量原创图书。无论是对于并发编程初学者还是对于具有一定开发实践经验的工程师和架构师,这本书都值得一看。
CSDN创始人、总裁 蒋涛

我加入CSDN 之后认识了很多博主, 冰河就是其中很好的代表之一。 冰河的这本《深入理解高并发编程:核心原理与案例实战》和我们平常看到的入门介绍的博文不同,该书深入地解析了高并发编程的核心原理,并分析了CPU、OS、编译、原子性等场景中的核心矛盾,光是这些透彻的分析就已经值回书价。不仅如此,该书还通过实际案例来给出应用指导,对于并发编程领域的学生和工程师乃至架构师和技术专家,都是一本高质量的指南,建议人手一本。
CSDN副总裁、《编程之美》《构建之法》作者 邹欣

从城市健康码故障到优惠券抢购承压,高并发场景早已不局限每年的“双十一”大促。冰河在本书中深入浅出地讲述了并发编程的原理及具体场景应用,更难得的是还佐以大量可运行的代码。无论对于入行不久的朋友,还是有一定经验的朋友,作为工具书,都有其价值。
蚂蚁金服资深技术专家、《程序员的三门课》《深入分布式缓存》联合作者  右军
在计算机多核时代,并发编程是每个程序员都应学会的思维模式。本书从操作系统到JDK JUC对并发编程的原理和本质做了深度的剖析,让读者知其然亦知其所以然;结合电商的超卖等热门业务场景对高并发系统设计进行了技术解密,体现了作者在这一领域的多年深厚积累。阅读此书,受益良多。
阿里中间件分布式事务团队负责人 季敏

冰河算是互联网行业内很勤奋的高产写书人了,我个人收藏了不少他撰写的书,在工作之余反复阅读。本书从计算机基础原理开始娓娓道来,而后巨细靡遗地梳理了分布式系统高并发的相关知识,让我这样一个在大厂基础架构部门从业十二年的一线开发人员有种 “朝花夕拾”之感:把“毕业即还给老师”的知识重新捡了起来,收获感很强。最难能可贵的是,本书还从实战角度讲解了系统的详细实现与优化技巧,是实际工作中很好的借鉴范例。虽然书中的很多知识是围绕 Java 语言进行阐述的,但个人觉得对非 Java 开发人员亦有指导意义。
 Dubbo-go社区负责人 于雨

本书从操作系统底层原理到应用实战深入浅出地剖析了高并发编程。通过阅读本书,可以更好地理解锁、线程、并发编程等知识,学会解决开发中的并发难题,了解在单机和分布式业务场景下如何高效地进行并发编程。强烈推荐大家阅读。
《亿级流量网站架构核心技术》作者 张开涛

高并发编程是每一个IT数字化人才推荐的核心技能,本书是业界难得的实践类好书,作者冰河同样是技术领域保证的资深专家。
这本书深入浅出剖析高并发的核心原理、实战案例以及系统架构等,让技术人员真正掌握高并发架构设计的本质,从而在面向不同业务场景时,都能够给出优雅的高并发架

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP