阿里 P9 分享:基于 JDK 8 源码剖析
前言
并发编程可选择的方式有多进程、多线程和多协程。
对于 Java 来说,它既不像 C++那样,在运行中调用 Linux 的系统 API 去“fork”出多个进程;也不像 Go 那样,在语言层面原生提供多协程。在 Java 中,并发就是多线程模式。
在 JDK1.5 发布之前,Java 只在语言级别上提供一些简单的线程互斥与同步机制,也就是 synchronized 关键字、wait 与 notify。如果遇到复杂的多线程编程场景,就需要开发者基于这些简单的机制解决复杂的线程同步问题。而从 JDK 1.5 开始,并发编程大师 Doug Lea 奉上了一个系统而全面的并发编程框架——JDK Concurrent 包,里面包含了各种原子操作、线程安全的容器、线程池和异步编程等内容。
本书基于 JDK 7 和 JDK 8,对整个 Concurrent 包进行全面的源码剖析。JDK 8 中大部分并发功能的实现和 JDK 7 一样,但新增了一些额外特性。例如 CompletableFuture、ConcurrentHashMap 的新实现、StampedLock、LongAdder 等。
目录展示
内容
多线程基础
这本 384 页篇幅的《Java 并发实现原理:JDK 源码剖析》,转发+评论,点击此处 凭截图即可免费获取!
Atomic 类
从本章开始,我们将从简单到复杂,从底层到上层,一步步剖析整个 Concurrent 包的层次体系,如图所示。
Lock 与 Condition
同步工具类
除了锁与 Condition, Concurrent 包还提供了-系列同步工具类。这些同步工具类的原理,有些也是基于 AQS 的,有些则需要特殊的实现机制,这一章将对所有同步工具类的实现原理进行剖析。
并发容器
在 Lock 和 Phaser 的实现中,已经介绍了基于 CAS 实现的无锁队列和无锁栈。本章将全面介绍 Concurrent 包提供的各种并发容器。
线程池与 Future
线程池的实现原理、类继承体系、核心数据结构、线程池的优雅关闭、任务的执行过程分析、线程池的 4 种拒绝策略
ForkJoinPool
ForkJoinPool 用法-------算法
Completabl eFuture
从 JDK 8 开始,在 Concurrent 包中提供了一个强大的异步编程工具 Compl etableFuture.在 JDK8 之 前,异步编程可以通过线程池和 Future 来实现,但功能还不够强大。Complet abl eFuture 的出现,使 Java 的异步编程能力向前迈进了一大步。
在探讨 CompletableFut ure 的原理之前,先详细看一下 Compl etableFuture 的用法,从这些用法中,可以看到相较之前的 Fu ture 有哪些能力得到了提升。
全书共 384 页的篇幅,到这里已经把所有章节展示出来了,由于文案原因是以图片的形式为大家展示,大家有不同的讲解欢迎讨论区留言
最后
多线程和并发是我们每一个码农或多或少都必须要掌握的知识点之一,这本 384 页篇幅的《Java 并发实现原理:JDK 源码剖析》从线程的基础一步步带你深入的了解多线程、并发,如果你想深入学习那这份文档很适合你,由于篇幅限制就只能这样展示出来了,需要的朋友帮忙评论+转发,点击此处 凭截图即可免费获取!
评论