五位阿里大牛联手撰写的《深入浅出 Java 多线程》,站在巨人的肩膀上学习!
6.1 并发编程模型的两个关键问题
6.2 Java 内存模型的抽象结构
6.2.1 运?时内存的划分
6.2.2 既然堆是共享的,为什么在堆中会有内存不可?问题?
6.2.3 JMM 与 Java 内存区域划分的区别与联系
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
==================================================================================
7.1 什么是重排序?
7.2 顺序一致性模型与 JMM 的保证
7.2.1 数据竞争与顺序一致性
7.2.2 顺序一致性模型
7.2.3 JMM 中同步程序的顺序一致性效果
7.2.4 JMM 中未同步程序的顺序一致性效果
7.3 happens-before
7.3.1 什么是 happens-before?
7.3.2 天然的 happens-before 关系
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
========================================================================
8.1 几个基本概念
8.1.1 内存可见性
8.1.2 重排序
8.1.3 happens-before 规则
8.2 volatile 的内存语义
8.2.1 内存可见性
8.2.1 禁止重排序
8.3 volatile 的用途
![](https://static001.geekbang.org/infoq/74/746e1985f5a725cc93c665237bc50a36.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
==============================================================================
9.1 Synchronized 关键字
9.2 几种锁
9.2.1 Java 对象头
9.2.2 偏向锁
9.2.3 轻量级锁
9.2.4 重量级锁
9.2.5 总结锁的升级流程
9.2.6 各种锁的优缺点对比
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
========================================================================
10.1 乐观锁与悲观锁的概念
10.2 CAS 的概念
10.3 Java 实现 CAS 的原理 - Unsafe 类
10.4 原子操作-AtomicInteger 类源码简析
10.5 CAS 实现原子操作的三大问题
10.5.1 ABA 问题
10.5.2 循环时间长开销大
10.5.3 只能保证一个共享变量的原子操作
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
转发+关注,然后私信回复我 “多线程”? 即可获得《深入浅出 Java 多线程》文档资料的免费领取方式。
====================================================================
11.1 AQS 简介
11.2 AQS 的数据结构
11.3 资源共享模式
11.4 AQS 的主要方法源码解析
11.4.1 获取资源
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
======================================================================
12.1 为什么要使用线程池
12.2 线程池的原理
12.2.1 ThreadPoolExecutor 提供的构造方法
12.2.2 ThreadPoolExecutor 的策略
12.2.3 线程池主要的任务处理流程
12.2.4 ThreadPoolExecutor 如何做到线程复用的?
12.3 四种常见的线程池
12.3.1 newCachedThreadPool
12.3.2 newFixedThreadPool
12.3.3 newSingleThreadExecutor
12.3.4 newScheduledThreadPool
![](https://static001.geekbang.org/infoq/06/069fbbb83532a02b2fccd0457895852b.png)
=====================================================================
13.1 阻塞队列的由来
13.2 BlockingQueue 的操作方法
13.3 BlockingQueue 的实现类
13.3.1 ArrayBlockingQueue
13.3.2 LinkedBlockingQueue
13.3.3 DelayQueue
13.3.4 PriorityBlockingQueue
13.3.5 SynchronousQueue
13.5 阻塞队列的原理
13.6 示例和使用场景
13.6.1 生产者-消费者模型
13.6.2 线程池中使用阻塞队列
![](https://static001.geekbang.org/infoq/6d/6da28f18693843ecd9d7a9f9eb6b0b4e.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
======================================================================
14.1 synchronized 的不足之处
14.2 锁的几种分类
14.2.1 可重入锁和非可重入锁
14.2.2 公平锁与非公平锁
14.2.3 读写锁和排它锁
14.3 JDK 中有关锁的一些接口和类
14.3.1 抽象类 AQS/AQLS/AOS
14.3.2 接口 Condition/Lock/ReadWriteLock
14.3.3 ReentrantLock
14.3.4 ReentrantReadWriteLock
14.3.5 StampedLock
![](https://static001.geekbang.org/infoq/a6/a6ab40181a1e664ab541d34e0e2b8bb3.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
=======================================================================
15.1 同步容器与并发容器
15.2 并发容器类介绍
15.2.1 并发 Map
15.2.2 并发 Queue
15.2.3 并发 Set
![](https://static001.geekbang.org/infoq/9e/9e9def4db11d699c5096ca01cef163bd.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
==============================================================================
16.1 什么是 CopyOnWrite 容器
16.2 CopyOnWriteArrayList
16.3 CopyOnWrite 的业务中实现
![](https://static001.geekbang.org/infoq/04/049ad6d9fb5a46c62f311590e5228613.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
======================================================================
17.1 Semaphore
17.1.1 Semaphore 介绍
17.1.2 Semaphore 案例
17.1.3 Semaphore 原理
17.2 Exchanger
17.3 CountDownLatch
17.3.1 CountDownLatch 介绍
17.3.2 CountDownLatch 案例
17.3.3 CountDownLatch 原理
17.4 CyclicBarrier
17.4.1 CyclicBarrier 介绍
17.4.2 CyclicBarrier Barrier 被破坏
17.4.3 CyclicBarrier 案例
17.4.4 CyclicBarrier 原理
17.5 Phaser
17.5.1 Phaser 介绍
17.5.2 Phaser 案例
17.5.3 Phaser 原理
![](https://static001.geekbang.org/infoq/66/660389642e0c414de3b803a58e557ee9.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
============================================================================
18.1 什么是 Fork/Join
18.2 工作窃取算法
18.3 Fork/Join 的具体实现
18.3.1 ForkJoinTask
18.3.2 ForkJoinPool
18.4 Fork/Join 的使用
![](https://static001.geekbang.org/infoq/6e/6e5295efa857b514d06d04e8595904c9.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
====================================================================================
19.1 Java 8 Stream 简介
19.2 Stream 单线程串行计算
19.3 Stream 多线程并行计算
19.4 从源码看 Stream 并行计算原理
19.5 Stream 并行计算的性能提升
![站在巨人肩膀上学习:五位阿里大牛撰写的《深入浅出 Java 多线程》](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWd
lLzU3OTYwNzVjMmEzNzQyM2M4ODcxMTkzNjYzYzY1ZWUx?x-oss-process=image/format,png)
=====================================================================
20.1 使用案例
20.2 类结构
20.3 主要方法介绍
20.3.1 schedule
20.3.2 scheduledAtFixedRate
20.3.3 scheduledAtFixedDelay
评论