来源书籍
Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式
编程语言类
类别清单覆盖
尚未完成类别清单核对。
全书概览
Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式
类别:编程语言类
整体评级
四象限结论:经典原理(高信息浓度 + 高稳定性)
支撑理由: 本书虽然以 Java 线程、JUC 和若干具体 API 为载体,但主线不是简单罗列调用方法,而是解释高并发编程中的根本约束和底层机制:线程池为何不能无界排队、线程数为何要区分 IO 密集型和 CPU 密集型任务、synchronized 如何依赖对象头与锁升级、CAS 的性能边界为何会引出 LongAdder、volatile 与 JMM 如何解决可见性和有序性、AQS 如何用模板方法和同步队列支撑显式锁。后半部分还把 Master-Worker、ForkJoin、生产者-消费者、Future、异步回调和 CompletableFuture 放到并发协作模型中理解。书中存在部分 JDK 版本和类库 API 细节,但这些细节服务于可迁移的并发原理,因此整体归为“经典原理”。
章节筛选
| 章节号 | 章节标题 | 精读/略读 | 状态(pending/done) | 卡片数 |
|---|---|---|---|---|
| 1 | 多线程原理与实战 | 精读:线程生命周期、线程池、线程数估算和 ThreadLocal 都是 Java 并发的底座;S4 补中断标志、拒绝策略。 | done | 7 |
| 2 | Java内置锁的核心原理 | 精读:对象头、锁升级、wait/notify 解释 synchronized 的底层代价与协作模型。 | done | 6 |
| 3 | CAS原理与JUC原子类 | 精读:CAS、ABA、LongAdder 是理解无锁并发与原子类边界的关键。 | done | 5 |
| 4 | 可见性与有序性的原理 | 精读:CPU 缓存、MESI、内存屏障、JMM 和 Happens-Before 是并发正确性的核心。 | done | 5 |
| 5 | JUC显式锁的原理与实战 | 精读:LockSupport、CLH、自旋锁、读写锁和 StampedLock 展示显式锁的取舍;S4 补 Semaphore、乐观读验证、可中断抢锁、CountDownLatch、可重入。 | done | 10 |
| 6 | AQS抽象同步器的核心原理 | 精读:AQS 是 JUC 同步器的共同骨架,源码流程值得形成长期卡片。 | done | 5 |
| 7 | JUC容器类 | 精读:CopyOnWrite、BlockingQueue、ConcurrentHashMap 体现并发容器的不同设计策略。 | done | 5 |
| 8 | 高并发设计模式 | 精读:单例、Master-Worker、ForkJoin、生产者-消费者、Future 是可迁移的并发结构。 | done | 5 |
| 9 | 高并发核心模式之异步回调模式 | 精读:主动获取结果与回调反转控制流,是异步系统设计的重要分界。 | done | 5 |
| 10 | CompletableFuture异步回调 | 精读:CompletionStage 链式编排是 Java 8 后表达异步流程的核心工具;S4 补默认公共池风险与异常处理。 | done | 7 |
S4 修订说明(两轮:S2初次生成 + S3审查后修订)
S2轮:全部 56 张卡片的 分类 字段已从历史旧枚举”专业/工作”迁移为当前模板六选一枚举(全部判定为”普通读书笔记卡”,本书未出现问题卡/延伸参考卡/操作参考卡/支付系统案例卡/结构图卡取材场景),并补齐 **参考来源** 的”位置/结论依据/原始内容”三项证据字段,逐一回读 _epub-src 对应 XHTML 原文核实。新增 P1 卡片 6 张(ch02-006、ch05-006、ch05-007、ch10-006、ch10-007,以及 P2 追加的 ch05-008),单卡修订 7 张(ch02-003、ch03-002、ch04-003、ch07-004、ch09-003、ch10-004、ch10-005)。
S3独立审查后的S4轮:审查发现系统性问题——54/56张卡片的 **内容** 字段超过 card-template.md 规定的 200 字硬上限(最严重 504 字),已全部逐张精简至 ≤200 字,删减内容中的版本号、多重限定移入”结论依据”字段或直接精简;同时补齐3张P1新增卡(ch01-006中断标志、ch01-007拒绝策略、ch05-009 CountDownLatch)+ 1张P2新增卡(ch05-010可重入),当前共 60 张卡片,全部通过 ≤200 字、三项证据字段齐全、无重复标题、无wikilink断链的机械复核。详见 _card_review.md 问题清单与对应卡片文件。
实践卡进度
| 序号 | 实践标题 | 实践方式 | 状态(pending/done) | 关联章节 | 产出 |
|---|---|---|---|---|---|
| 1 | CHM桶锁在JDK17是否成立 | 实现深读 | done | 第7章 | 真实核对 JDK 17 源码,确认桶级CAS/synchronized加锁与树化阈值仍成立,并发现 Segment 类已降级为仅供序列化兼容的空壳类 |
| 2 | if判断wait条件真的会出错吗 | 最小实验 | done | 第2章 | 真实运行对比程序,if版本3消费者中2个(67%)取到过期null,while版本全程无脏数据,验证竞争唤醒风险 |
| 3 | 公共池线程饥饿的真实代价 | 最小实验 | done | 第10章 | 真实测量公共池占满后快任务延迟2004ms(接近满阻塞时长),隔离到独立线程池后延迟降为0ms |
实践卡产出的运行结果已回填进对应 idea 文件的”验证与复盘”字段;未采用更高成本的完整实现或行为实验,因为本书核心是原理机制,最小实验/实现深读已能直接验证书中定性结论并给出量化证据。
章节与卡片
01 进程与线程的区别
- 线程是调度粒度 普通读书笔记卡
01 Executors快捷创建线程池的潜在问题
- 线程池要有边界 普通读书笔记卡
01 为CPU密集型任务确定线程数
- 按任务类型配线程 普通读书笔记卡
01 ThreadLocalMap源码分析
- ThreadLocal隔离 普通读书笔记卡
01 线程的daemon操作
- Daemon不担保收尾 普通读书笔记卡
01 线程的interrupt操作
- 中断只是设置一个标志 普通读书笔记卡
01 线程池的拒绝策略
- 拒绝策略决定过载去向 普通读书笔记卡
02 临界区资源与临界区代码段
- 竞态来自复合操作 普通读书笔记卡
02 Mark Word的结构信息
- 对象头承载锁态 普通读书笔记卡
02 无锁、偏向锁、轻量级锁和重量级锁
- 锁会逐级膨胀 普通读书笔记卡
02 需要在synchronized同步块的内部使用wait和notify
- 等待通知须持锁 普通读书笔记卡
02 生产者-消费者之间的线程间通信
- 生产消费靠条件 普通读书笔记卡
02 需要在synchronized同步块的内部使用wait和notify
- 等待条件必须循环复查 普通读书笔记卡
03 Unsafe类中的CAS方法
- CAS是乐观提交 普通读书笔记卡
- Unsafe连接硬件 普通读书笔记卡
03 ABA问题解决方案
- ABA要看历史 普通读书笔记卡
03 LongAdder的原理
- LongAdder分散热点 普通读书笔记卡
03 CAS操作的弊端和规避措施
- 无锁也有边界 普通读书笔记卡
04 有序性问题
- 并发三难题 普通读书笔记卡
04 可见性问题
- 缓存带来可见性 普通读书笔记卡
04 volatile语义中的内存屏障
- volatile传递信号 普通读书笔记卡
04 硬件层面的内存屏障
- 屏障约束重排 普通读书笔记卡
04 规则3:传递性规则
- HB是推理工具 普通读书笔记卡
05 使用显式锁的模板代码
- 显式锁需模板 普通读书笔记卡
05 LockSupport
- LockSupport是地基 普通读书笔记卡
05 CAS可能导致"总线风暴"
- 自旋怕总线风暴 普通读书笔记卡
05 CLH自旋锁
- CLH排队降竞争 普通读书笔记卡
05 读写锁ReentrantReadWriteLock
- 读写锁看比例 普通读书笔记卡
05 共享锁Semaphore
- Semaphore限制共享名额 普通读书笔记卡
05 StampedLock
- 乐观读必须验证快照 普通读书笔记卡
05 锁的可中断抢占
- 可中断抢锁用于可取消等待 普通读书笔记卡
05 共享锁CountDownLatch
- CountDownLatch一次性计数 普通读书笔记卡
05 可重入锁ReentrantLock
- 可重入锁允许自己再进 普通读书笔记卡
06 锁与队列的关系
- AQS是同步骨架 普通读书笔记卡
06 显式锁抢占的总体流程
- 模板方法管流程 普通读书笔记卡
06 锁与队列的关系
- 同步队列排失败者 普通读书笔记卡
06 线程挂起:parkAndCheckInterrupt()
- 挂起前要确认前驱 普通读书笔记卡
06 signal()唤醒方法原理
- 条件队列分离等待 普通读书笔记卡
07 线程安全的同步容器类
- 同步容器锁太粗 普通读书笔记卡
07 CopyOnWriteArrayList的原理
- 写时复制偏向读 普通读书笔记卡
07 BlockingQueue的特点
- 阻塞队列管背压 普通读书笔记卡
07 JDK 1.8版本ConcurrentHashMap的核心原理
- CHM分段到桶锁 普通读书笔记卡
07 JUC高并发容器
- 并发容器选模型 普通读书笔记卡
08 使用双重检查锁+volatile
- DCL必须配volatile 普通读书笔记卡
08 使用静态内部类实现懒汉式单例模式
- 静态内部类延迟 普通读书笔记卡
08 Master-Worker模式的参考实现
- Master拆分调度 普通读书笔记卡
08 工作窃取算法
- 工作窃取补负载 普通读书笔记卡
08 Future模式
- Future先给契约 普通读书笔记卡
09 异步回调与主动调用
09 ChannelFuture的使用
- 回调线程要识别 普通读书笔记卡
09 ListenableFuture异步任务
- Guava增强Future 普通读书笔记卡
09 ChannelFuture的使用
- Netty监听IO完成 普通读书笔记卡
10 CompletionStage接口
- 阶段表达流水线 普通读书笔记卡
10 4个任务串行方法的区别
- 串行依赖选方法 普通读书笔记卡
10 thenCompose()方法
- Compose避免嵌套 普通读书笔记卡
10 allOf()等待所有的任务结束
- 合并等待全部 普通读书笔记卡
10 applyToEither()方法
- 择快不是择优 普通读书笔记卡
10 线程池的使用
- 默认公共池不放阻塞任务 普通读书笔记卡
10 调用handle()方法统一处理异常和结果
- 异步链必须处理异常 普通读书笔记卡
相关主题
暂无公开主题。