来源书籍

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 进程与线程的区别

  1. 线程是调度粒度 普通读书笔记卡

01 Executors快捷创建线程池的潜在问题

  1. 线程池要有边界 普通读书笔记卡

01 为CPU密集型任务确定线程数

  1. 按任务类型配线程 普通读书笔记卡

01 ThreadLocalMap源码分析

  1. ThreadLocal隔离 普通读书笔记卡

01 线程的daemon操作

  1. Daemon不担保收尾 普通读书笔记卡

01 线程的interrupt操作

  1. 中断只是设置一个标志 普通读书笔记卡

01 线程池的拒绝策略

  1. 拒绝策略决定过载去向 普通读书笔记卡

02 临界区资源与临界区代码段

  1. 竞态来自复合操作 普通读书笔记卡

02 Mark Word的结构信息

  1. 对象头承载锁态 普通读书笔记卡

02 无锁、偏向锁、轻量级锁和重量级锁

  1. 锁会逐级膨胀 普通读书笔记卡

02 需要在synchronized同步块的内部使用wait和notify

  1. 等待通知须持锁 普通读书笔记卡

02 生产者-消费者之间的线程间通信

  1. 生产消费靠条件 普通读书笔记卡

02 需要在synchronized同步块的内部使用wait和notify

  1. 等待条件必须循环复查 普通读书笔记卡

03 Unsafe类中的CAS方法

  1. CAS是乐观提交 普通读书笔记卡
  2. Unsafe连接硬件 普通读书笔记卡

03 ABA问题解决方案

  1. ABA要看历史 普通读书笔记卡

03 LongAdder的原理

  1. LongAdder分散热点 普通读书笔记卡

03 CAS操作的弊端和规避措施

  1. 无锁也有边界 普通读书笔记卡

04 有序性问题

  1. 并发三难题 普通读书笔记卡

04 可见性问题

  1. 缓存带来可见性 普通读书笔记卡

04 volatile语义中的内存屏障

  1. volatile传递信号 普通读书笔记卡

04 硬件层面的内存屏障

  1. 屏障约束重排 普通读书笔记卡

04 规则3:传递性规则

  1. HB是推理工具 普通读书笔记卡

05 使用显式锁的模板代码

  1. 显式锁需模板 普通读书笔记卡

05 LockSupport

  1. LockSupport是地基 普通读书笔记卡

05 CAS可能导致"总线风暴"

  1. 自旋怕总线风暴 普通读书笔记卡

05 CLH自旋锁

  1. CLH排队降竞争 普通读书笔记卡

05 读写锁ReentrantReadWriteLock

  1. 读写锁看比例 普通读书笔记卡

05 共享锁Semaphore

  1. Semaphore限制共享名额 普通读书笔记卡

05 StampedLock

  1. 乐观读必须验证快照 普通读书笔记卡

05 锁的可中断抢占

  1. 可中断抢锁用于可取消等待 普通读书笔记卡

05 共享锁CountDownLatch

  1. CountDownLatch一次性计数 普通读书笔记卡

05 可重入锁ReentrantLock

  1. 可重入锁允许自己再进 普通读书笔记卡

06 锁与队列的关系

  1. AQS是同步骨架 普通读书笔记卡

06 显式锁抢占的总体流程

  1. 模板方法管流程 普通读书笔记卡

06 锁与队列的关系

  1. 同步队列排失败者 普通读书笔记卡

06 线程挂起:parkAndCheckInterrupt()

  1. 挂起前要确认前驱 普通读书笔记卡

06 signal()唤醒方法原理

  1. 条件队列分离等待 普通读书笔记卡

07 线程安全的同步容器类

  1. 同步容器锁太粗 普通读书笔记卡

07 CopyOnWriteArrayList的原理

  1. 写时复制偏向读 普通读书笔记卡

07 BlockingQueue的特点

  1. 阻塞队列管背压 普通读书笔记卡

07 JDK 1.8版本ConcurrentHashMap的核心原理

  1. CHM分段到桶锁 普通读书笔记卡

07 JUC高并发容器

  1. 并发容器选模型 普通读书笔记卡

08 使用双重检查锁+volatile

  1. DCL必须配volatile 普通读书笔记卡

08 使用静态内部类实现懒汉式单例模式

  1. 静态内部类延迟 普通读书笔记卡

08 Master-Worker模式的参考实现

  1. Master拆分调度 普通读书笔记卡

08 工作窃取算法

  1. 工作窃取补负载 普通读书笔记卡

08 Future模式

  1. Future先给契约 普通读书笔记卡

09 异步回调与主动调用

  1. 主动调用会阻塞 普通读书笔记卡
  2. 回调反转方向 普通读书笔记卡

09 ChannelFuture的使用

  1. 回调线程要识别 普通读书笔记卡

09 ListenableFuture异步任务

  1. Guava增强Future 普通读书笔记卡

09 ChannelFuture的使用

  1. Netty监听IO完成 普通读书笔记卡

10 CompletionStage接口

  1. 阶段表达流水线 普通读书笔记卡

10 4个任务串行方法的区别

  1. 串行依赖选方法 普通读书笔记卡

10 thenCompose()方法

  1. Compose避免嵌套 普通读书笔记卡

10 allOf()等待所有的任务结束

  1. 合并等待全部 普通读书笔记卡

10 applyToEither()方法

  1. 择快不是择优 普通读书笔记卡

10 线程池的使用

  1. 默认公共池不放阻塞任务 普通读书笔记卡

10 调用handle()方法统一处理异常和结果

  1. 异步链必须处理异常 普通读书笔记卡

相关主题

暂无公开主题。