Java 并发
Java 并发
从内存可见性到线程池与上下文清理,建立能解释、能复现的并发知识。
- 适用人群
- 掌握 Java 基础,开始使用多线程的后端开发者
- 前置知识
- 类与对象、异常处理、基本集合
- 版本与验证
- 样例使用 JDK 21;记录实际运行环境,历史资料按版本阅读。
01基础理解
- volatile 与 happens-before:可见性的保证到哪里
通过发布一个结果,理解可见性与原子性的区别。
Temurin JDK 21.0.13:标准库示例运行及断言;不含并发性能测试。 - synchronized 与 volatile:怎样选择同步方式
用同一把锁保护复合更新,区分互斥与状态发布。
Temurin JDK 21.0.13:标准库示例运行及断言;不含并发性能测试。 - Java 线程池:提交任务后怎样正确关闭
区分停止接单、等待结果和释放线程池资源。
本轮通过隔离 JDK 21 功能示例;不代表生产负载或网络调用验证。
02实践应用
- ThreadPoolExecutor:线程、队列与拒绝策略怎样配合
用有界队列复现线程池扩容与任务拒绝。
Temurin JDK 21.0.13:标准库示例运行及断言;不含并发性能测试。 - CompletableFuture:转换结果与组合异步步骤
根据返回值类型和任务依赖选择异步组合方式。
本轮通过隔离 JDK 21 功能示例;不代表生产负载或网络调用验证。
03问题排查
- ThreadLocal:线程池复用时为什么要 remove
复现线程复用导致的上下文残留,并验证清理。
Temurin JDK 21.0.13:标准库示例运行及断言;不含并发性能测试。 - Java 死锁排查:复现循环等待并读取线程信息
用线程信息定位循环等待,避免把无响应一律认定为死锁。
本轮通过隔离 JDK 21 功能示例;不代表生产负载或网络调用验证。 - CompletableFuture:异常、超时与取消的边界
区分异步结果失败、等待超时与业务任务停止。
本轮通过隔离 JDK 21 功能示例;不代表生产负载或网络调用验证。
学完之后
能解释 happens-before,配置有界线程池,并排查线程复用造成的状态残留。
继续选择学习专题