
Juc并发编程
文章平均质量分 93
本专栏系统讲解 Java 并发编程(JUC),涵盖 进程与线程、并发与并行、并发问题的根源、线程池、锁机制、并发容器、工具类、CAS 底层原理 等模块,既聚焦底层机制,又注重应用场景。专栏特色:
📖 原理可视化:通过图示拆解线程、锁、并发数据结构的内部实现
🛠 实战驱动:结合 BAT、字节跳
夏驰和徐策
一个喜欢打游戏的计算机专业学生;这是我的GitHub:https://github.com/XiaChiandXuce
展开
-
JUC并发编程 - 原理篇 - 指令级并行原理
主频的概念大家接触的比较多,而 CPU 的 Clock Cycle Time(时钟周期时间),等于主频的倒数,意思是 CPU 能够识别的最小时间单位,比如说 4G 主频的 CPU 的 Clock Cycle Time 就是 0.25 ns,作为对比,我们墙上挂钟的 Cycle Time 是 1s。例如,运行一条加法指令一般需要一个时钟周期时间。原创 2025-05-04 17:06:16 · 596 阅读 · 0 评论 -
JUC并发编程 - 应用篇 - 多线程高效利用CPU
为了对比多线程在不同 CPU 核数下的表现,本次测试选择了专业的基准测试工具。它能够实现:程序预热(避免首次调用影响测试结果)多次测试并自动计算平均值方法一:使用虚拟机,分配合适的 CPU 核数方法二:通过msconfig修改 CPU 核数(缺点:需要重启)最初尝试使用,但发现它调度不可控,容易带来问题改为手动创建ThreadFutureTask,实现简单高效的并行🧠高效利用多线程前,首先要搭建。原创 2025-05-04 16:42:40 · 732 阅读 · 0 评论 -
JUC并发编程 - 解决方案模式篇 - 线程安全单例:JVM 内存监控
单例模式是一种常见的创建型设计模式,确保在整个程序运行期间,某个类只能被实例化一次,并提供一个全局访问点。这些实现方法各有优缺点,核心考虑点包括线程安全、性能、延迟加载、以及反射和反序列化的安全性。原创 2025-05-04 16:09:40 · 1010 阅读 · 0 评论 -
JUC并发编程 - 解决方案模式篇 - 同步模式之保护性暂停
💬场景题(阿里)现象:你在项目中发现,主线程需要等待一个子线程下载文件完成后才能继续处理,但偶尔会出现“永远挂起不结束”的现象。问题:请分析原因,并说明如何用保护性暂停解决。✅参考答案原因分析:主线程直接wait()等待,子线程负责下载完毕后notify();出现“永远挂起”的原因:子线程未正确notify();主线程wait()时未用while包裹检查条件,可能遇到虚假唤醒;或者锁对象不一致,导致通知失败。解决方案:用 GuardedObject 封装等待逻辑,主线程调用get()原创 2025-05-04 15:47:37 · 1059 阅读 · 0 评论 -
JUC并发编程 - 4.2 synchronized 解决方案
采用互斥机制:让同一时刻最多只有一个线程持有对象锁,其它线程如果想获取锁,就会被阻塞。这样就能保证持有锁的线程安全执行临界区代码,不受上下文切换干扰。的基本原理互斥与同步的区别如何用对象锁保护共享资源面向对象的加锁思路任何时候,锁对象要统一,否则加锁就形同虚设。的本质是用锁机制实现线程安全的“原子性”。原创 2025-05-04 15:25:00 · 1056 阅读 · 0 评论 -
JUC并发编程 - 4. 共享模型之管程 - 4.1 共享带来的问题
这一节我们通过一个有趣的小故事,讲清楚了:线程共享模型的本质为什么会出现线程安全问题临界区 & 竞态条件的概念以及 Java 中经典的竞态演示在并发编程中,共享资源 + 多线程修改是 bug 的温床!下一节我们将进入解决方案 👊。原创 2025-05-04 14:53:45 · 1080 阅读 · 0 评论 -
JUC并发编程 - 3.12 五种状态(增强版)
这一节深入解析了线程的五种基本状态初始状态可运行状态运行状态阻塞状态终止状态并扩展了Java Thread.State 状态细节调优视角和大厂级应用背景,让你既懂理论也看清实战问题。原创 2025-05-04 14:40:28 · 964 阅读 · 0 评论 -
JUC并发编程 - 3.4 原理之线程运行(增强版)
本节从理论到实战全面解析了「线程的运行原理」,补充了:栈帧结构细节上下文切换的细节与优化程序计数器的核心作用多核调度的企业级视角远程监控的安全配置👉 这节课不仅让你看懂 JVM 是怎么调度线程的,还让你具备大厂级的实战视野✅。原创 2025-05-04 13:57:28 · 1021 阅读 · 0 评论 -
JUC并发编程 - 3.3 查看进程线程的方法
任务管理器可以查看进程和线程数,也可以用来杀死进程。查看进程(可以查找包含"java"的所有进程)杀死进程表示强制关闭,12345是进程号。🔎任务管理器 → 详细信息 → 右键列 → 选择“线程数”列,可看到每个进程的线程数。更深入分析线程:使用(微软官方工具),支持查看线程栈。🧠 理论理解Windows 提供了多种查看进程和线程的方法,核心工具包括任务管理器、命令行工具(tasklisttaskkill。原创 2025-05-04 13:36:41 · 864 阅读 · 0 评论 -
JUC并发编程 - 2.3 应用
以调用方角度场景描述同步调用必须等待结果返回,才能继续执行异步调用不需要等待结果返回,立刻继续执行你可以理解为:异步 = 不用干等,任务在后台悄悄做。这一节我们介绍了:多线程的两个典型应用:1️⃣提升程序的响应性,不阻塞主流程2️⃣让 CPU 多核并行跑任务,减少总耗时多线程并不总能提升效率,要具体问题具体分析学会辨别场景,用对线程,才能让程序更高效!原创 2025-05-04 13:08:05 · 614 阅读 · 0 评论 -
JUC并发编程 - 1. 概览
这门课中的「并发」涵盖了:程序的执行实例,拥有独立的内存空间。:进程内独立执行的最小单位,多个线程共享同一个进程的内存。:多个任务交替执行,利用单核CPU切换上下文实现“同时执行”的效果。:多个任务真正同时执行,通常基于多核CPU。此外,这门课还包括:Java的与;其他领域的并发知识拓展,比如和。原创 2025-05-04 12:52:48 · 351 阅读 · 0 评论