所有分类
  • 所有分类
  • 后端开发
  • 干货有料

Java并发编程进阶技术实践

课程简介

本课程专注于Java并发编程,深入讲解每一个Java程序员必须掌握的核心技能。通过系统学习同步器AQS、并发容器、线程池、并发安全以及Java内存模型等五大关键领域,你将建立起全面的并发编程知识体系。课程不仅涵盖理论讲解,还结合大量源码解析和实战案例,确保你能够在实际工作中灵活运用所学知识,构建高并发、高可用的系统架构。

课程目录

第一章 同步器AQS

  1. 1. AQS的概念和原理
    • • 课程介绍和学习目标
    • • AQS的概念和工作模式
    • • 回顾对象锁的工作原理
    • • AQS的核心组件及工作流程
    • • AQS源码解析之同步状态的原子性管理
    • • AQS源码解析之acquire方法源码简介
    • • AQS源码解析之release方法源码简介
    • • AQS源码解析之acquireShared和releaseShared方法简介
    • • AQS源码解析之acquireInterruptibly和tryAcquireNanos方法简介
  2. 2. AQS的数据结构及使用方式、Lock框架的再认识
    • • AQS队列数据结构的基本介绍
    • • Node内部类源码解析
    • • 同步队列节点的入队操作
    • • 同步队列节点的出队操作
    • • 等待队列节点的入队操作
    • • 等待队列节点的出队操作
    • • 共享模式下节点的入队与出队操作
    • • 关于节点的取消状态
    • • AQS的设计模式之模板方法
    • • 自定义一个简单的互斥锁
    • • 自定义一个可重入的互斥锁
    • • 共享锁的实现思路及注意事项
    • • Lock和synchronized的区别
    • • 公平与非公平的底层支持:可闯入策略
    • • 使用synchronized关键字实现读多写少的测试
    • • 读写锁ReentrantReadWriteLock的基本使用
    • • 读写锁的适用性与关注点
    • • Callable、Future和FutureTask回顾
    • • ForkJoin框架与工作秘取的基本概念
    • • ForkJoinTask与两个常用子类RecursiveTask、RecursiveAction源码概述
    • • ForkJoin案例:分别使用单线程和fork-join框架运算数组元素之和
    • • ForkJoin案例:使用RecursiveAction遍历目录(含子目录)打印指定类型文件

第二章 并发容器

  1. 1. 并发容器-课程所有资料在本节下载
    • • 课程介绍与学习目标
    • • ConcurrentHashMap预备知识:hash算法和位运算
    • • ConcurrentHashMap数据结构预览
    • • ConcurrentHashMap在jdk1.7及以前的实现原理概述
    • • ConcurrentHashMap在jdk1.7及以前的初始化源码解析
    • • ConcurrentHashMap在jdk1.7及以前的get()方法源码解析
    • • ConcurrentHashMap在jdk1.7及以前的put()方法源码解析
    • • ConcurrentHashMap在jdk1.7及以前的扩容机制和size()方法源码解析
    • • ConcurrentHashMap在jdk8及以后的实现原理概述
    • • ConcurrentHashMap在jdk8及以后的初始化和put()方法源码解析
    • • ConcurrentHashMap在jdk8及以后的get()方法源码解析
    • • ConcurrentHashMap在jdk8及以后的扩容机制和size()方法源码解析
    • • ConcurrentHashMap在jdk8及以后的总结
    • • 跳表SkipList的工作原理
    • • 无界非阻塞队列ConcurrentLinkedQueue简介
    • • 写时复制容器简介
    • • 阻塞队列的概念及由来
    • • 阻塞队列的常用方法辨析
    • • 常见阻塞队列及各自特点辨析
    • • 使用DelayQueue实现延时订单-延时队列元素工具类定义
    • • 使用DelayQueue实现延时订单-生产者和消费者线程定义及测试
    • • 阻塞队列的底层实现:显示锁+等待通知机制

第三章 线程池

  1. 1. 线程池
    • • 课程介绍与学习目标
    • • 线程池的概念和好处
    • • 自定义线程池:思路分析
    • • 自定义线程池:创建线程池,初始化工作线程
    • • 自定义线程池:工作线程从任务队列中获取任务并执行
    • • 自定义线程池:提供execute方法供调用者执行任务
    • • 自定义线程池:提供destroy方法用于销毁线程池
    • • 自定义线程池:测试及线程池工作流程
    • • ThreadPoolExecutor源码分析:初始化线程池参数
    • • ThreadPoolExecutor源码分析:提交任务execute和submit方法
    • • ThreadPoolExecutor源码分析:关闭线程池shutdown和shutdowNow方法
    • • 线程池工作机制
    • • 使用ThreadPoolExecutor创建线程池并使用
    • • 提交带返回值的任务到ThreadPoolExecutor线程池
    • • 线程池的关闭:shutdown与shutdownNow方法的使用
    • • 合理配置线程池
    • • 系统预定义线程池简介
    • • 定时任务ScheduledThreadPoolExecutor用法
    • • 定时任务ScheduledThreadPoolExecutor异常处理
    • • Executor框架继承体系和使用流程
    • • CompletionService按线程池中任务完成顺序获取结果
    • • CompletionService实现原理

第四章 并发安全

  1. 1. 并发安全
    • • 课程简介和学习目标
    • • 什么是类的线程安全
    • • 类的线程安全:无状态、加锁和CAS操作
    • • 类的线程安全:让类不可变 – 属性加final
    • • 类的线程安全:让类不可变 – 不提供修改属性的方式
    • • 类的线程安全:栈封闭
    • • 类的线程安全:volatile、安全的发布、ThreadLocal
    • • 死锁产生的原因
    • • 常见的死锁发生的两个场景
    • • 动态顺序死锁的产生
    • • 动态顺序死锁的解决方案一:内在排序
    • • 动态顺序死锁的解决方案二:Lock.tryLock方法
    • • 活锁与饥饿
    • • 衡量多线程引用性能的指标与影响因素
    • • 锁优化:缩小锁的范围
    • • 锁优化:减少锁的粒度
    • • 锁优化:锁分段和替换独占锁
    • • 常见的两种单例设计模式
    • • 使用枚举实现单例:防止反射攻击
    • • 懒汉式单例模式:双重检查确保并发安全
    • • 懒汉式单例模式:双重检查的问题及解决方案
    • • 单例设计模式大杀器:延迟占位模式

第五章 Java内存模型

  1. 1. Java内存模型
    • • 课程介绍与学习目标
    • • 现代计算机物理内存模型
    • • 物理内存模型带来的问题
    • • 并发编程模型的分类
    • • Java内存模型图示
    • • Java线程通信的实现
    • • Java虚拟机的体系结构
    • • JMM在JVM中的实现:栈
    • • JMM在JVM中的实现:堆
    • • JMM在JVM中的实现:方法区
    • • 堆栈溢出异常:StackOverFlowError和OutOfMemoryError
    • • 基于共享内存的JMM的问题:可见性和竞争
    • • 重排序的概念和分类
    • • 重排序与依赖性:数据依赖性
    • • 重排序与依赖性:控制依赖性与as-if-serieal语义
    • • 并发下重排序的问题
    • • 并发下重排序问题的解决方案:临界区
    • • 并发下重排序问题的解决方案:内存屏障
    • • Happens-Before规则的概念
    • • 无须任何同步手段就可以保证的Happens-Before规则
    • • final关键字的内存语义
    • • volatile关键字的内存语义
    • • volatile关键字内存语义的实现
    • • 锁的内存语义
    • • synchronized的实现原理
资源下载
下载价格1 赞赏币
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?