Java多线程并发体系实战(微课视频版)
上QQ阅读APP看书,第一时间看更新

前言

2005年左右民用的多核CPU正式进入市场,标志着一个新时代来临了。双核和多核处理器设计用于在一枚处理器中集成两个或多个完整执行内核,以支持同时执行并管理多个任务。以前的单核CPU相当于一个人工作,它有很多任务,并很快地在任务之间切换工作,给人们造成的感觉好像是同时在执行,例如我上了一个聊天软件,我又在打游戏,感觉好像在同时执行,实际上单核CPU只是很快速地在各个任务之间切换工作,而多核心CPU相当于有多个人在同时工作,这才是真正意义上的多核心同时工作,当然它们也会在各个任务之间切换调度。

Java的多线程Thread核心类早在JDK 1.0就已经有了,从一开始就确立了Java最基础的线程模型,并且这样的线程模型在后续的修补中,并未发生实质上的变更,可以说是一个具有传承性的良好设计。

随着多核CPU的到来,在2004年发布的JDK 1.5中加入了Executors线程池、Callable、Future异步任务支持、Lock锁、concurrent并发包下的大量工具类,标志着Java多线程的时代来临了。

本书特点

本书以JDK 17长期维护版本为示例,详细地介绍了与Java多线程并发相关的知识体系,让读者不仅知其然,而且知其所以然。本书对多线程相关的理论分门别类、层层递进地进行详细叙述和透彻分析,既体现了各知识点之间的联系,又兼顾了其渐进性。本书在介绍每个知识点时都给出了该知识点的应用场景,同时配合代码演示,让读者更能明白其实现原理、使用方式。本书丰富的免费配套资源包括源代码、笔记、完整的配套视频。

本书主要内容

第1章介绍了Thread线程对象的创建方式、启动方式、常用方法、优先级、守护线程。

第2章介绍了ThreadGroup线程组的概念、线程对象构造器、线程类常用方法、线程对象异常捕获、等待线程对象销毁、线程对象的优雅关闭。

第3章介绍了线程之间的协作,synchronized对象锁、线程死锁的产生、Object对象监视器、线程阻塞等待机制、线程唤醒机制、线程可见性、重排序、线程生命周期状态。

第4章介绍了ThreadLocal线程局部变量的使用、实现机制的核心概念、Reference弱引用。

第5章介绍了Lock锁接口的相关规范,以及ReentrantLock、Condition、ReentrantReadWriteLock。

第6章介绍了atomic原子包、AtomicBoolean、AtomicInteger、AtomicReference、AtomicIntegerFieldUpdater、AtomicIntegerArray、LongAdder。

第7章介绍了BlockingQueue接口的相关规范,及其核心实现类ArrayBlockingQueue、LinkedBlockingQueue、LinkedTransferQueue、SynchronousQueue、PriorityBlockingQueue、DelayQueue。

第8章介绍了ThreadPoolExecutor线程池整个链路的串联、ThreadPoolExecutor线程池的使用,源码分析其核心概念、FutureTask的核心概念、AbstractExecutorService的使用、ScheduledThreadPoolExecutor定时器的使用,源码分析其核心概念。

第9章介绍了线程同步器的使用、CountDownLatch、CyclicBarrier、Semaphore、Phaser。

第10章介绍了AbstractQueuedSynchronizer框架,详细分析了其源码,利用官方文档示例实现自己的同步锁、同步器。

读者对象

所有对Java多线程感兴趣的软件开发人员。

资源下载提示

素材(源码)等资源:扫描目录上方的二维码下载。

视频等资源:扫描封底的文泉云盘防盗码,再扫描书中相应章节中的二维码,可以在线学习。

致谢

特别感谢清华大学出版社的赵佳霓编辑。感谢她对本书专业且高效的审阅及对本书提出的建设性意见,有效推动了本书的出版。同时也感谢参与本书出版的所有人员,在大家的辛勤努力下,才有了本书的顺利出版。

刘宁萌

2023年2月