本课程讲解每一个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的实现原理