课程简介
这套全面且深度定制的“JAVA后端架构师”课程——《Java多线程与高并发从入门到精通》,专为有意提升Java并发编程能力的学习者匠心打造。课程内容不仅包括基础核心知识点,如线程原理与synchronized锁机制的深入剖析,还涵盖了多线程环境下的并发处理策略和技术实现细节。
更进一步,课程深度解读了ReentrantLock的底层源代码逻辑,帮助学员透彻理解其工作原理并熟练运用。同时,对于Java线程池的源码解析部分,旨在引导学员洞悉其内部运作机制,从而在实际开发中能更加高效地管理和调度线程资源。
此外,课程精心设计了针对行业面试的高频考点讲解环节,通过对实际案例的精细解读和常见问题的模拟解答,助力学员在面试过程中展现出卓越的技术实力和解决问题的能力。
不论您是希望提升现有项目的性能瓶颈,还是为了迎接更高挑战的架构设计职位,甚至是备战技术面试以寻求职业发展突破,这套总容量达5.93GB的精品课程都将为您提供全方位的知识滋养和技能提升,让您在Java高并发领域的学习道路上稳扎稳打,不断进阶。
课程截图
课程目录
序号 | 课程标题 | 描述 |
---|
001 | 马士兵2023最新MCA3.0版Java架构师课 | 马士兵老师的2023年最新MCA3.0版Java架构师课程,从入门到精通,全面深入地讲解Java多线程与高并发的知识。 |
002 | synchronized锁01:什么是CAS? | 深入探讨CAS(Compare-and-Swap)机制,以及它在Java多线程中的作用和运用。 |
003 | synchronized锁02:CAS在新的JUC包里有哪些运用? | 分析CAS在Java的并发包(JUC)中的运用,以及它如何支持Java的多线程并发控制。 |
004 | synchronized锁03:用户态与内核态 | 讲解用户态与内核态的概念,以及它们在Java多线程中的作用和影响。 |
005 | synchronized锁04:对象的内存布局 | 分析Java对象的内存布局,以及它如何影响多线程的并发访问和同步控制。 |
006 | synchronized锁05:锁升级过程 | 详细讲解Java的锁升级过程,以及它在多线程并发控制中的作用和原理。 |
007 | synchronized锁06:锁的细节1:锁重入 | 分析锁重入的概念和原理,以及它在Java多线程同步中的运用。 |
008 | synchronized锁07:锁的细节2:偏向锁启动与偏向锁未启动 | 深入探讨偏向锁的概念和原理,以及它在Java多线程并发控制中的运用。 |
009 | synchronized锁08:锁降级过程 | 详细讲解Java的锁降级过程,以及它在多线程并发控制中的作用和原理。 |
010 | synchronized锁09:synchronized实现过程 | 分析synchronized关键字在Java中的实现过程,以及它如何支持多线程的同步控制。 |
011 | 线程&synchronized锁10:什么是锁? | 介绍锁的基本概念和作用,以及它在Java多线程并发控制中的重要性和必要性。 |
012 | 线程&synchronized锁11:互斥锁 | 分析互斥锁的概念和原理,以及它在Java多线程并发控制中的运用。 |
013 | 线程&synchronized锁12:synchronized关键字 | 分析synchronized关键字在Java中的用法和原理,以及它如何支持多线程的同步控制。 |
014 | 线程&synchronized锁13:markword | 分析Java对象头中的markword字段的作用和原理,以及它如何支持对象的标识和同步控制。 |
015 | 线程&synchronized锁14:CAS | 深入探讨CAS(Compare-and-Swap)机制,以及它在Java多线程并发控制中的运用。 |
016 | 线程&synchronized锁15:自旋锁 | 分析自旋锁的概念和原理,以及它在Java多线程并发控制中的运用。 |
序号 | 课程标题 | 描述 |
---|
017 | 线程&synchronized锁16:锁升级初步 | 深入探讨Java中的锁升级机制,以及它如何应对多线程并发访问的问题。 |
018 | 线程&synchronized锁17:小结 | 对前面所学的Java多线程与同步的内容进行总结和回顾。 |
019 | 线程&synchronized锁18:计算机组成 | 从计算机组成的视角探讨多线程并发访问的问题,以及如何通过硬件和操作系统层面来支持多线程。 |
020 | 线程&synchronized锁19:多核CPU | 分析多核CPU的架构和工作原理,以及它如何影响Java多线程并发控制。 |
021 | 线程&synchronized锁20:cacheline的概念伪共享) | 深入探讨cacheline的概念和伪共享问题,以及它对Java多线程并发访问的影响。 |
022 | 线程&synchronized锁21:cachelinepadding代码讲解) | 通过代码示例讲解如何通过cacheline padding来优化Java多线程的性能。 |
023 | 线程&synchronized锁22:多线程可见性问题 | 分析多线程可见性问题,以及如何通过Java的内存模型来解决这个问题。 |
024 | 线程&synchronized锁23:disorder代码讲解 | 通过代码示例讲解如何避免指令重排,从而避免多线程并发访问的问题。 |
025 | 线程&synchronized锁24:novisibility代码讲解 | 通过代码示例讲解如何解决Java中多线程不可见性的问题。 |
026 | 线程&synchronized锁25:汇编码解读 | 通过解读汇编代码,深入理解Java多线程同步的底层实现机制。 |
027-28 | 线程&synchronized锁26-27:dcl单列要不要加volatile1-2.mp4 | 深入探讨volatile关键字在解决Java多线程并发访问问题中的作用和用法。 |
029-30 | 线程&synchronized锁28-29:解决乱序jvm内存屏障.mp4 | 解决JVM内存屏障导致的乱序问题,并深入了解Java内存模型的工作原理。 |
031-32 | 多线程&高并发30-31:为什么阿里京东都喜欢问juc?.mp4 | 分析阿里巴巴和京东等大型互联网公司面试中经常问到的Java并发知识,以及如何准备这些面试题。 |
序号 | 课程标题 | 描述 |
---|
033 | 多线程&高并发32:为什么CAS和AQS是JUC的核心? | 深入探讨CAS(Compare-and-Swap)和AQS(AbstractQueuedSynchronizer)在Java并发包(JUC)中的核心作用和原理。 |
034 | 多线程&高并发33:ReentrantLock适用于什么场景? | 分析ReentrantLock在Java并发编程中的适用场景,以及它如何提供可重入锁的机制。 |
035 | 多线程&高并发34:原生锁支持(LockSupport)适用于什么场景? | 探讨LockSupport在Java并发编程中的适用场景,以及它如何提供灵活的线程阻塞和唤醒机制。 |
036 | 多线程&高并发35:各种同步器在大厂面试中的综合运用怎么做? | 分析各种同步器(如ReentrantLock、Semaphore等)在大厂面试中的常见问题,并提供解决这些问题的思路和方法。 |
037 | 多线程&高并发36:从CPU架构的角度理解底层高并发的构成 | 从计算机组成和CPU架构的视角深入探讨底层高并发的构成和工作原理。 |
038 | 多线程&高并发37:为什么百度腾讯喜欢跟你聊线程池? | 分析百度和腾讯等大厂面试中经常问到的线程池问题,以及线程池在多线程并发控制中的重要性。 |
039 | 多线程&高并发38:JDK有哪些直接可用的线程池? | 列举Java标准库中提供的常用线程池,并分析它们的特性和适用场景。 |
040 | 多线程&高并发39:线程池如果需要自定义,有哪些参数可以定义? | 分析在需要自定义线程池时,可以设置哪些参数,如核心线程数、最大线程数、队列类型等。 |
041 | 多线程&高并发40:生产环境中的线程池如何监控? | 提供生产环境中线程池监控的实用方法和工具,以确保线程池的稳定运行和性能优化。 |
042 | 多线程&高并发41:线程池有哪些在实际中的应用场景? | 通过实际案例讲解线程池在实际系统中的常见应用场景,如任务调度、异步处理等。 |
043 | 多线程&高并发42:面向未来,学习路线指引与职业规划指导.mp4 | 分析当前多线程与高并发技术的发展趋势,为学习者提供学习路线和职业规划的建议。 |
044-45 | 并发的本质43-44:计算机组成原理-现代CPU架构带来的可见性难题详解.mp4 | 从计算机组成原理的角度深入探讨现代CPU架构对并发编程中可见性问题的挑战和解决方案。 |
046-47 | 并发的本质45-46:探寻锁的本质.mp4 | 深入探讨锁的本质和它在并发编程中的作用,以及如何通过锁来解决并发访问的问题。 |
048-49 | 并发的本质47-48:cacheline的概念-缓存行对齐、伪共享.mp4 | 分析cacheline的概念和它在解决并发访问问题中的作用,以及如何通过缓存行对齐和伪共享来优化性能。 |
序号 | 课程标题 | 描述 |
---|
049-50 | 并发的本质48-49:有序性带来的this溢出问题、半程对象问题 | 深入探讨并发编程中由于有序性带来的this溢出和半程对象问题,以及如何解决这些问题。 |
051 | 并发的本质50:Java靠什么解决可见性和有序性 | 分析Java如何通过内存模型和关键字来保证可见性和有序性,解决并发访问的问题。 |
052 | 并发的本质51:写Buffer的底层性能优化问题(首次公开) | 从底层角度探讨写缓冲区的性能优化问题,并分享一些实用的优化技巧。 |
053-054 | 并发的本质52-53:锁的本质到底是个啥?、锁在Java中如何实现 | 深入探讨锁的本质和它在Java中的实现方式,包括synchronized关键字和ReentrantLock类的使用。 |
055-056 | 并发的本质54-55:锁概念解析、详解自旋锁概念 | 对锁的概念进行解析,并深入探讨自旋锁的工作原理和适用场景。 |
057-066 | 并发的本质56-65:Java中的锁优化,锁升级详解、ReentrantLock源码分析系列课程 | 从源码层面深入分析ReentrantLock的实现原理,包括锁的升级、AQS机制等。 |
序号 | 课程标题 | 描述 |
---|
067-068 | ReentrantLock源码-66-67:unlock方法分析、release方法分析 | 深入探讨ReentrantLock的unlock和release方法的实现原理,以及它们在锁释放过程中的作用。 |
069-072 | 线程池源码68-71:并发课程介绍-线程池源码、应用方式、核心参数、线程池执行流程分析 | 介绍线程池的并发课程,包括线程池的应用方式、核心参数以及线程池的执行流程分析。 |
073-074 | 线程池源码72-73:线程池ctl属性分析、线程池状态 | 分析线程池的ctl属性和状态,了解线程池的运行状态和内部机制。 |
075-076 | 线程池源码74-75:execute方法、addworker方法-状态&数量判断 | 深入探讨线程池的execute方法和addworker方法,包括它们的状态和数量判断逻辑。 |
077-078 | 线程池源码76-77:addworker方法-添加&启动工作线程、worker对象简单认知 | 分析addworker方法的实现,了解工作线程的添加和启动过程,并对worker对象进行简单认知。 |
079-080 | 线程池源码78-79:runworker方法分析、gettask方法分析 | 对线程池的runworker方法和gettask方法进行深入分析,了解线程池的工作流程和任务获取机制。 |
081-082 | 线程池源码80-81:processworkerexit方法分析、基础篇01-线程的概念 | 分析线程池的processworkerexit方法,并介绍基础篇的内容,包括线程的基本概念。 |
序号 | 课程标题 | 描述 |
---|
083-084 | 基础篇02-03:线程的启动方式、线程的3个方法 | 介绍线程的启动方式和线程的3个方法,包括run、start和call等。 |
085-086 | 基础篇04-05:线程的状态、锁的概念 | 深入探讨线程的状态和锁的概念,包括线程的生命周期和锁在并发编程中的作用。 |
087-088 | 基础篇06-07:锁的特性、设计小程序验证锁的问题 | 分析锁的特性,并通过设计小程序来验证锁的问题,了解锁在实际应用中的使用。 |
089-090 | 基础篇08-09:锁的可重入属性、异常跟锁 | 探讨锁的可重入属性以及异常与锁的关系,了解锁的重入机制和异常处理。 |
091-092 | 基础篇10-11:锁的底层实现、volatile保证线程可见性 | 分析锁的底层实现机制,并探讨volatile关键字在保证线程可见性方面的作用。 |
093-094 | 基础篇12-13:volatile禁止指令重排序、volatile不能保证原子性 | 深入探讨volatile关键字的特性,包括禁止指令重排序和不能保证原子性的细节。 |
095-096 | 基础篇14-15:synchronized优化、简单回顾 | 分析synchronized关键字的优化方法,并进行简单的回顾,总结线程和锁的重要知识点。 |
097-098 | 基础篇16-17:cas(1)、cas(2) | 开始探讨CAS(Compare-and-Swap)机制,包括CAS的基本概念和它在并发编程中的作用。通过两节课深入探讨CAS的原理和应用。 |
序号 | 课程标题 | 描述 |
---|
099-100 | 基础篇18-19:longadder、间接性复习 | 探讨LongAdder类在并发编程中的应用,并复习之前学过的知识点。 |
101-102 | 基础篇20-21:reentrantlock、countdownlatch | 分析ReentrantLock类的实现原理,并介绍CountDownLatch类在并发编程中的应用。 |
103-104 | 基础篇22-23:cyclicbarrier、phaser | 探讨CyclicBarrier和Phaser类在并发编程中的应用,了解它们在多线程同步中的作用。 |
105-106 | 基础篇24-25:readwritelock、semaphore | 分析ReadWriteLock和Semaphore类的实现原理,了解它们在并发编程中的使用。 |
107-108 | 基础篇26-27:exchanger、locksupport | 探讨Exchanger和LockSupport类在并发编程中的应用,了解它们在多线程间的协作和同步机制。 |
109-114 | 基础篇28-33:面试题一(1)-(6)、面试题二(1)-(2) | 通过面试题的形式,深入探讨并发编程中的重要知识点,包括volatile、wait/notify、CountDownLatch、Semaphore等。同时分析synchronized和CAS等核心机制。 |
115-116 | 基础篇34-35:读源码的方法、reentrantlock源码 | 分析如何阅读并发编程相关源码,并通过ReentrantLock的源码解析其实现原理和内部机制。 |
117-118 | 基础篇36-37:aqs源码、阿里对同步深刻思考问题 | 分析AQS的源码实现,了解其核心机制。同时探讨阿里对同步的深刻思考问题,深入理解并发编程在实际应用中的挑战和解决方案。 |
119-126 | 面试精讲系列:经典老炮哲学家就餐问题等 | 通过一系列经典的并发编程面试题目,深入探讨并发编程的核心知识点,包括线程安全、线程交替、同步问题等。同时了解HashMap的线程安全方式、扩容优化以及嵌入式服务器等相关知识。 |
序号 | 课程标题 | 描述 |
---|
127-128 | 面试精讲系列:为什么hashmap扩容的时候是2倍、concurrenthashmap底层原理是什么 | 探讨为什么HashMap在扩容时选择2倍增长,并深入了解ConcurrentHashMap的底层原理。 |
129-130 | 面试精讲系列:高并发中的集合有哪些问题、threadlocal的原理是什么,使用场景有哪些 | 分析高并发中集合可能遇到的问题,并探讨ThreadLocal的原理以及使用场景。 |
131-132 | 面试精讲系列:synchronized和lock有哪些区别、线程池线程复用的原理是什么 | 比较synchronized和Lock的区别,并探讨线程池线程复用的原理。 |
133-134 | 面试精讲系列:如何预防死锁、介绍线程的生命周期和状态 | 讨论如何预防死锁,并详细介绍线程的生命周期和状态。 |
135-136 | 面试精讲系列:描述一下线程安全活跃态问题,以及竞态条件、创建线程有哪些方式 | 分析线程安全活跃态问题和竞态条件,并介绍创建线程的几种方式。 |
137-138 | 面试精讲系列:为什么要使用线程池、线程的sleep、wait、join、yield如何使用 | 解释使用线程池的原因,并探讨线程的sleep、wait、join和yield的使用方法。 |
139-140 | 面试精讲系列:程序开多少线程合适、什么是守护线程 | 分析程序中线程的数量应如何设置,并解释守护线程的概念。 |
141-146 | 30w面试题系列:强引用的原理与应用场景等 | 深入探讨Java中的强引用、软引用、虚引用等概念及其应用场景,并分析ThreadLocal是否存在内存泄漏等问题。 |