本课程讲解每一个Java程序员必知必会的并发编程技能,课程内容包含同步器AQS、并发容器、线程池、并发安全、Java内存模型5个方面,带你全面掌握并发编程体系。
* 第一章 同步器AQS/
* AQS的概念和原理/
* 1-0-1课程介绍和学习目标
* 1-1-1AQS的概念和工作模式
* 1-1-2回顾对象锁的工作原理
* 1-1-3AQS的核心组件及工作流程
* 1-1-4AQS源码解析之同步状态的原子性管理
* 1-1-5AQS源码解析之acquire方法源码简介
* 1-1-6AQS源码解析之release方法源码简介
* 1-1-7AQS源码解析之acquireShared和releaseShared方法简介
* 1-1-8AQS源码解析之acqureiInterruptibly和tryAcquireNanos方法简介
* AQS的数据结构及使用方式、Lock框架的再认识/
* 1-2-1AQS队列数据结构的基本介绍
* 1-2-2Node内部类源码解析
* 1-2-3同步队列节点的入队操作
* 1-2-4同步队列节点的出队操作
* 1-2-5等待队列节点的入队操作
* 1-2-6等待队列节点的出队操作
* 1-2-7共享模式下节点的入队与出队操作
* 1-2-8关于节点的取消状态
* 1-3-1AQS的设计模式之模板方法
* 1-3-2自定义一个简单的互斥锁
* 1-3-3自定义一个可重入的互斥锁
* 1-3-4共享锁的实现思路及注意事项
* 1-4-1Lock和synchronized的区别
* 1-4-2公平与非公平的底层支持:可闯入策略
* 1-4-3使用synchronized关键字实现读多写少的测试
* 1-4-4读写锁ReentrantReadWriteLock的基本使用
* 1-4-5读写锁的适用性与关注点
* 1-4-6Callable、Future和FutureTask回顾
* 1-4-7ForkJoin框架与工作秘取的基本概念
* 1-4-8ForkJoinTask与两个常用子类RecursiveTask、RecursiveAction源码概述
* 1-4-9ForkJoin案例:分别使用单线程和fork-join框架运算数组元素之和
* 1-4-10ForkJoin案例:使用RecursiveAction遍历目录(含子目录)打印指定类型文件
* 第二章 并发容器/
* 并发容器-课程所有资料在本节下载/
* 2-0-1课程介绍与学习目标
* 2-1-1ConcurrentHashMap预备知识:hash算法和位运算
* 2-1-2ConcurrentHashMap数据结构预览
* 2-1-3ConcurrentHashMap在jdk1.7及以前的实现原理概述
* 2-1-4ConcurrentHashMap在jdk1.7及以前的初始化源码解析
* 2-1-5ConcurrentHashMap在jdk1.7及以前的get()方法源码解析
* 2-1-6ConcurrentHashMap在jdk1.7及以前的put()方法源码解析
* 2-1-7ConcurrentHashMap在jdk1.7及以前的扩容机制和size()方法源码解析
* 2-1-8ConcurrentHashMap在jdk8及以后的实现原理概述
* 2-1-9ConcurrentHashMap在jdk8及以后的初始化和put()方法源码解析
* 2-1-10ConcurrentHashMap在jdk8及以后的get()方法源码解析
* 2-1-11ConcurrentHashMap在jdk8及以后的扩容机制和size()方法源码解析
* 2-1-12ConcurrentHashMap在jdk8及以后的总结
* 2-2-1跳表SkipList的工作原理
* 2-2-2无界非阻塞队列ConcurrentLinkedQueue简介
* 2-2-3写时复制容器简介
* 2-3-1阻塞队列的概念及由来
* 2-3-2阻塞队列的常用方法辨析
* 2-3-3常见阻塞队列及各自特点辨析
* 2-3-4使用DelayQueue实现延时订单-延时队列元素工具类定义
* 2-3-5使用DelayQueue实现延时订单-生产者和消费者线程定义及测试
* 2-3-6阻塞队列的底层实现:显示锁+等待通知机制
* 第三章 线程池/
* 线程池/
* 3-0-1课程介绍与学习目标
* 3-1-1线程池的概念和好处
* 3-1-2自定义线程池:思路分析
* 3-1-3自定义线程池:创建线程池,初始化工作线程
* 3-1-4自定义线程池:工作线程从任务队列中获取任务并执行
* 3-1-5自定义线程池:提供execute方法供调用者执行任务
* 3-1-6自定义线程池:提供destroy方法用于销毁线程池
* 3-1-7自定义线程池:测试及线程池工作流程
* 3-2-1ThreadPoolExecutor源码分析:初始化线程池参数
* 3-2-2ThreadPoolExecutor源码分析:提交任务execute和submit方法
* 3-2-3ThreadPoolExecutor源码分析:关闭线程池shutdown和shutdowNow方法
* 3-2-4线程池工作机制
* 3-2-5使用ThreadPoolExecutor创建线程池并使用
* 3-2-6提交带返回值的任务到ThreadPoolExecutor线程池
* 3-2-7线程池的关闭:shutdown与shutdownNow方法的使用
* 3-2-8合理配置线程池
* 3-3-1系统预定义线程池简介
* 3-3-2定时任务ScheduledThreadPoolExecutor用法
* 3-3-3定时任务ScheduledThreadPoolExecutor异常处理
* 3-3-4Executor框架继承体系和使用流程
* 3-3-5CompletionService按线程池中任务完成顺序获取结果
* 3-3-6CompletionService实现原理
* 第四章 并发安全/
* 并发安全/
* 4-0-1并发安全:课程简介和学习目标
* 4-1-1什么是类的线程安全
* 4-1-2类的线程安全:无状态、加锁和CAS操作
* 4-1-3类的线程安全:让类不可变 - 属性加final
* 4-1-4类的线程安全:让类不可变 - 不提供修改属性的方式
* 4-1-5类的线程安全:栈封闭
* 4-1-6类的线程安全:volatile、安全的发布、ThreadLocal
* 4-2-1死锁产生的原因
* 4-2-2常见的死锁发生的两个场景
* 4-2-3动态顺序死锁的产生
* 4-2-4动态顺序死锁的解决方案一:内在排序
* 4-2-5动态顺序死锁的解决方案二:Lock.tryLock方法
* 4-2-6活锁与饥饿
* 4-3-1衡量多线程引用性能的指标与影响因素
* 4-3-2锁优化:缩小锁的范围
* 4-3-3锁优化:减少锁的粒度
* 4-3-4锁优化:锁分段和替换独占锁
* 4-3-5常见的两种单例设计模式
* 4-3-6使用枚举实现单例:防止反射攻击
* 4-3-7懒汉式单例模式:双重检查确保并发安全
* 4-3-8懒汉式单例模式:双重检查的问题及解决方案
* 4-3-9单例设计模式大杀器:延迟占位模式
* 第五章 Java内存模型/
* Java内存模型/
* 5-0-1课程介绍与学习目标
* 5-1-1现代计算机物理内存模型
* 5-1-2物理内存模型带来的问题
* 5-2-1并发编程模型的分类
* 5-2-3Java内存模型图示
* 5-2-4Java线程通信的实现
* 5-2-5Java虚拟机的体系结构
* 5-2-6JMM在JVM中的实现:栈
* 5-2-7JMM在JVM中的实现:堆
* 5-2-8JMM在JVM中的实现:方法区
* 5-2-9堆栈溢出异常:StackOverFlowError和OutOfMemoryError
* 5-2-10基于共享内存的JMM的问题:可见性和竞争
* 5-2-11重排序的概念和分类
* 5-2-12重排序与依赖性:数据依赖性
* 5-2-13重排序与依赖性:控制依赖性与as-if-serieal语义
* 5-2-14并发下重排序的问题
* 5-2-15并发下重排序问题的解决方案:临界区
* 5-2-16并发下重排序问题的解决方案:内存屏障
* 5-3-1Happens-Before规则的概念
* 5-3-2无须任何同步手段就可以保证的Happens-Before规则
* 5-3-3final关键字的内存语义
* 5-3-4volatile关键字的内存语义
* 5-3-5volatile关键字内存语义的实现
* 5-4-1锁的内存语义
* 5-4-2synchronized的实现原理





![[衡天云]爆款云服务器 低至12元/月](/hty.png)