前言
并发编程可选择的方式有多进程、多线程和多协程。
对于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源码剖析》,转发+评论,关注我私信回复“666”即可免费获取
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源码剖析》从线程的基础一步步带你深入的了解多线程、并发,如果你想深入学习那这份文档很适合你,由于篇幅限制就只能这样展示出来了,需要的朋友帮忙评论+转发,关注我之后直接私信【666】即可免费获取!