全网独家!20K点赞的Java并发多线程笔记,简直堪称神仙级文档

83 阅读5分钟

有很多小伙伴都问过我,关于java多线程的文章有pdf版本吗?我其实很想弄pdf,但是前段时间一直没时间去折腾,我把每个Java并发编程核心技术的都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货!

每个知识点都有左侧导航书签页,看的时候十分方便**+XXX_WWW666666获取**由于内容较多,这里就截取一部分图吧。

目录:

第一篇:基础篇

  1. 进程与线程基本概念

  2. Java多线程入i门类和接口

  3. 线程组和线程优先级

  4. Java线程的状态及主要转化方法

  5. Java线程间的通信

第⼆篇:原理篇

  1. Java内存模型基础知识

  2. 重排序与happens-before

  3. volatle

  4. synchronized与锁

  5. CAS与原子操作

  6. AQS

第三篇:JDK⼯具篇

  1. 线程池原理

  2. 阻塞队列

  3. 锁接口和类

  4. 并发集合容器简介

  5. CopyOnWrite

  6. 通信工具类

  7. Fork/Join框架

  8. Java 8 Stream并行计算原理

  9. 计划任务

第四章:Java线程的状态及主要转化方法

  1. 1.操作系统中的线程状态转换

  2. 2.Java线程的6个状态

  3. NEW

  4. RUNNABLE .

  5. BLOCKED

  6. WAITING

  7. TIMED_ _WAITING

  8. TERMINATED

  9. 3.线程状态的转换

  10. BLOCKED与RUNNABL E状态的转换

  11. WAITING状态与RUNNABLE状态的转换

  12. TIMED_ _WAITING与RUNNABL E状态转换

  13. 线程中断

![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/04b0cc79800f42ab82e5ae306c55b47e~tplv-k3u1fbpfcp-watermark.image?)  

第五章:Java线程间的通信

  1. 锁与同步

  2. 等待通知机制

  3. 信号量

  4. 管道

  5. 其它通信相关

  6. join方法

  7. sleep方法

  8. ThreadLocal类

  9. InheritableThreadLocal

第六章:Java内存模型基础知识

  1. 并发编程模型的两个关键问题

  2. Java内存模型的抽象结构

  3. 运行时内存的划分

  4. 既然堆是共享的,为什么在堆中会有内存不可见问题?

  5. JMM与Java内存区域划分的区别与联系

第七章:重排序与happens-before

  1. 什么是重排序?

  2. 顺序一致性模型与JMM的保证

  3. 数据竞争与顺序一致性

  4. 顺序一致性模型

  5. JMM中同步程序的顺序一致性效果

  6. JMM中未同步程序的顺序-致性效果

  7. happens-before

  8. 什么是happens-before?

  9. 天然的happens-before关系

第八章:volatile

  1. 几个基本概念

  2. 内存可见性

  3. 重排序

  4. happens-before规则

  5. 2.volaile的内存语义

  6. 内存可见性

  7. 3.禁止重排序

  8. volafile的用途

第九章:synchronized与锁

  1. Synchronized关键字

  2. 几种锁

  3. Java对象头

  4. 偏向锁

  5. 轻量级锁

  6. 重量级锁.

  7. 总结锁的升级流程

  8. 各种锁的优缺点对比

第十章:乐观锁和悲观锁

  1. 乐观锁与惠观锁的概念

  2. CAS的概念

  3. Java实现CAS的原理- Unsafe类

  4. 原子操作-Atomiclnteger类源码简析

  5. CAS实现原子操作的三大问题

第十一章:AQS

  1. AQS简介

  2. AQS的数据结构

  3. 资源共享模式

  4. AQS的主要方法源码解析

  5. 释放资源.

第十二章:线程池原理

  1. 为什么要使用线程池

  2. 线程池的原理

  3. ThreadPollExecutor提供的构造方法

  4. ThreadPoolExecutor的策略

  5. 线程池主要的任务处理流程

  6. ThreadPollExecutor如何做到线程复用的?

  7. 四种常见的线程池

  8. newCachedThreadPool

  9. newFixedThreadPool

  10. newSingleTheadExecutor

  11. newScheduledThreadPool

![](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/491b92bdafbf47bcaf10839a32d97e26~tplv-k3u1fbpfcp-watermark.image?)  

第十三章:阻塞队列

  1. 阻塞队列的由来

  2. BlockingQueue的操作方法

  3. BlockingQueue的实现类

  4. AmayBlockingQueue

  5. LinkedBlockingQueue

  6. DelayQueue

  7. PriorityBlockingQueue

  8. SynchronousQueue

  9. 阻塞队列的原理

  10. 示例和使用场景

  11. 生产者-消费者模型

  12. 线程池中使用阻塞队列

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ce0ce941856f46588b49f856cde36793~tplv-k3u1fbpfcp-watermark.image?)  

第十四章:锁接口和类

  1. synchronized的不足之处

  2. 锁的几种分类

  3. 可重入锁和非可重入锁

  4. 公平锁与非公平锁

  5. 读写锁和排它锁

  6. JDK中有关锁的一些接口和类

  7. 抽象类AQS/AQLSIAOS

  8. 接口Condition/LockReadWriteLock

  9. ReentrantLock

  10. ReentrantReadWiteLock

  11. StampedLock

![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f9040ff4c0b94b2588d28296ecf2d335~tplv-k3u1fbpfcp-watermark.image?)  

第十五章:并发容器集合

  1. 同步容器与并发容器

  2. 并发容器类介绍.

  3. 并发Map

  4. 并发Queue

  5. 并发Set

第十六章:CopyOnWite容器

  1. 什么是CopyOnWite容器

  2. CopyOnWriteArrayList

  3. CopyOnWrite的业务中实现

第十七章:通信工具类

  1. Semaphore

  2. Semaphore介绍

  3. Semaphore案例

  4. Semaphore原理

  5. Exchanger

  6. CounDownl atch

  7. CounDownl _atch介绍

  8. CountDownL atch案例

  9. CountDownL atch原理

  10. CyclicBarrier

  11. CylicBarner介绍

  12. CyclicBarrier Barier被破坏

  13. CylicBarrier案例

  14. CycliBarrier原理

  15. Phaser

  16. Phaser介绍

  17. Phaser案例

  18. Phaser原理

![](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75578378f9c9430481d2ed90f700347c~tplv-k3u1fbpfcp-watermark.image?)  

第十八章:Fork/Join框架

  1. 什么是ForkJoin

  2. 工作窃取算法

  3. Fork/Jbin的具体实现

  4. ForkJoinTask

  5. ForkJoinPool

  6. Fork/Join的使用

第十九章:Java 8 Stream并行计算原理

  1. Java 8 Stream简介

  2. Stream单线程串行计算

  3. Stream多线程并行计算

  4. 从源码看Stream并行计算原理

  5. Stream并行计算的性能提升