图书前言

前    言

5G时代、物联网时代的大幕已经开启,新时代提升了对Java应用的高性能、高并发的要求,也抬高了Java工程师的技术台阶和面试门槛。

很多公司的面试题从某个侧面反映了生产场景的技术要求。之前只有BAT等大公司才有高并发技术相关的面试题,现在与Java项目相关的整个行业基本都涉及此类面试题。多线程、线程池、内置锁、JMM、CAS、JUC、高并发设计模式等Java并发编程方面的面试题,从以前的加分题变成现在的基础题。本书着重介绍Java并发编程基础知识,揭秘Java高并发编程的核心难题和解决方案。

本书内容

本书是三卷本《Java高并发核心编程》的第2卷,旨在帮助大家掌握Java高并发基础知识:多线程、线程池、内置锁、JMM、CAS、JUC、高并发设计模式、Java异步回调、CompletableFuture类等。

第1章介绍线程的核心原理、线程的基本操作、线程池的核心原理、JUC的线程池架构、4种快捷创建线程池的方法。除此之外,还从生产实际的角度出发,介绍在生产场景中如何合理预估3类线程池(IO密集型、CPU密集性、混合型)的线程数。

第2章基于生产者-消费者模式的实战案例介绍线程安全问题和Java内置锁的核心原理。首先揭秘Java对象的存储布局、对象头的具体结构,并介绍如何用JOL工具查看对象的结构。然后介绍synchronized内置锁的核心原理,以及内置锁从偏向锁到轻量级锁再到重量级锁的升级过程。

第3章介绍CAS原理与JUC原子类,并解密在争用激烈的高并发场景下,如何提升CAS操作的性能。最后揭秘CAS操作的弊端和两类规避措施。

第4章介绍Java并发编程的三大问题——原子性问题、可见性问题和有序性问题,阐述JMM的核心原理,揭秘Java内存可见性和volatile关键字的底层知识。

第5章介绍JUC显式锁的原理与实战。首先介绍使用显式锁的正确方法、显式锁的分类,然后揭秘CAS可能导致的“总线风暴”和CLH自旋锁,最后从实例出发介绍JUC中的可中断锁和不可中断锁、共享锁与独占锁、读写锁。

第6章介绍JUC高并发的基础设施——AQS抽象同步器的核心原理。本章从模板模式入手,抽丝剥茧,层层深入,揭秘AQS的内部结构。然后结合SimpleMockLock独占锁的释放流程、ReentrantLock的抢锁流程,图文并茂地剖析释放、抢占AQS锁的源码和原理。

第7章介绍JUC容器类,包括CopyOnWriteArrayList、BlockingQueue、ConcurrentHashMap等高并发容器类的原理和使用。

第8章介绍高并发设计模式,主要包括Java开发必须掌握的安全单例模式、Master-Worker模式、ForkJoin模式、生产者-消费者模式、Future模式。

第9章着重介绍高并发编程中经常用到的高并发设计模式——异步回调模式。

第10章介绍Java 8所提供的一个具备异步回调能力的新工具类——CompletableFuture类的原理和使用。

以上内容是开发Java高并发应用所必备的知识,也是广大Java工程师必须掌握的高并发基础知识。

读者对象

1)对Java编程感兴趣的大专院校学生。

2)Java工程师。

3)Java架构师。

本书源代码下载

本书的源代码可以扫码右侧的二维码进行下载,若下载有问题,请发送电子邮件至booksaga@126.com,邮件主题为“Java高并发核心编程 卷2(加强版)下载资源”。

勘误和支持

由于笔者水平和能力有限,书中不妥之处在所难免,希望读者批评指正。

致谢

首先感谢卞诚君老师,没有他的指导和帮助,就不会有《Netty、Redis、ZooKeeper高并发实战》一书的面世,更不会有后续的本书。

然后感谢《Netty、Redis、ZooKeeper高并发实战》一书的读者,是他们对该书的高度评价,极大地提升了笔者的写作自信,激励笔者推出了三卷《Java高并发核心编程》,本书为第2卷。

最后感谢“疯狂创客圈”社群中的小伙伴们,他们中有很多非常有前途的技术狂人,他们对Java高并发技术的狂热喜爱让笔者惊叹不已。技术狂人们也获得了丰厚的回报,比如专科毕业的第76号、第453号技术狂人,已经顺利走向技术自由,成为P7级以上的技术专家,尤其是第76号卷王,两年之内薪资涨3倍,可喜可贺。

欢迎大家进入“疯狂创客圈”社群积极“砸”问题,虽然有的技术难题笔者不一定能给出最佳的解决方案,但坦诚、纯粹的技术交流,能让大家相互启发,产生技术灵感,拓展技术视野,并最终提升技术水平。

尼  恩

2022年8月25日