RickLynn Lee / Runtime Lab

Java Runtime Lab / curriculum

学过,跑通,解释清楚。

一门聚焦的历史课程、按版本标注的 Java 官方文档、六个原创可执行练习;不转载大学作业解答。

核验日期:2026 年 11 月 14 日。历史课程、已发布 JDK 文档与可选 preview 阅读分别标注;不把计划课程说成已开放。

下载结构化资源清单 JSON · 匿名资料访问核验记录

精选课程与访问条件

Massachusetts Institute of Technology · 6.172 · Performance Engineering of Software Systems

Fall 2018 · 课程语言: C · 核验: 2026-11-14

先修: 6.004 Computation Structures; 6.006 Introduction to Algorithms; 6.031 Software Construction (formerly 6.005)

用于性能测量、并发推理与工作量分析。Java 25 的契约由下方原始资料补足。

公开阅读:归档 OCW 讲义、视频、阅读与作业不需注册或付费。阅读不等于 MIT 注册学生,也不授予学分或证书。校园招生、选课和学费是另一回事,本实验不提供注册服务。

六个原创可执行练习

先执行 doctor → build。每个命令在本地启动真实 Java、核验完整记录,再围绕一个问题输出结果。使用 --record 和相应保存 JSON 可只检查记录。无需 API key。

先测生命周期,再谈性能

Lecture 10: Measurement and Timing · Java SE 25: RecordingFile

先预测: 哪些计数应精确重现?哪些时间戳会变化?

python3 scripts/learn.py measure

观察并解释: 读取真实 JFR 计数与任务顺序。逐轮比较,不用平均值掩盖失败路径。

JFR、调度与 sleep 会影响耗时;这不是 JMH 吞吐基准。

限制执行,并跟踪提交者

Lecture 6: Multicore Programming · Java SE 25: ThreadPoolExecutor

先预测: CallerRuns 的 overflow 是否代表请求被拒绝?

python3 scripts/learn.py pool

观察并解释: 检查提交 = 完成 + 拒绝,以及 callerRuns。跟踪任务 5 的提交到终态。

C 语言课程提供并发基础;拒绝策略的具体行为以 Java API 为准。

线程便宜,下游槽位有限

Lecture 6: Multicore Programming · JEP 444: Virtual Threads · Java SE 25: Semaphore

先预测: N=7、C=2 时,先预测各策略的下游峰值、等待数与拒绝数。

python3 scripts/learn.py capacity --requests 7 --capacity 2

观察并解释: 真实虚拟线程:无限制峰值 7;排队峰值 2、最多等待 5;拒绝策略完成 2、拒绝 5。检查每个任务和许可归还。

门闩强制重叠。容量是本地声明的资源界限,不是远程服务吞吐测量。等待数仅因有限突发而有界。

取消等待者与许可持有者

Java SE 25: Future · Java SE 25: Semaphore · Vanderbilt archive: Managing the Java Lifecycle — Stopping a Java Thread via an Interrupt

先预测: cancel(true) 后,isCancelled 为 true 时下游槽位是否还可能被占用?

python3 scripts/learn.py cancel

观察并解释: 等待中取消从未进入下游。协作任务归还许可;忽略中断的对照在 cancel_snapshot 时仍占用许可。实际退出后才归还全部许可。

35 毫秒只限制 Future.get 等待,不是端到端 deadline。忽略中断的对照有有限 watchdog。

同时统计成功与工作放大

Lecture 2: Bentley Rules for Optimizing Work · Java SE 25: Future

先预测: 哪个策略花费更多下游尝试?哪个策略会主动暴露请求失败?

python3 scripts/learn.py retry

观察并解释: 比较相同失败计划下的尝试数、成功与失败请求。通过 lab.py run 修改 --failures 并解释工作量变化。

第 2 讲用于工作量分析,不是重试算法教学。本实验使用有限合成失败,不是级联故障模型。

用独立证据质疑记录

Lecture 7: Races and Parallelism · Java SE 25: Virtual Threads · JEP 491: Synchronize Virtual Threads without Pinning · Java SE 25: RecordingFile

先预测: 只查汇总能否发现许可泄漏、伪造线程类型或缺失的真实 JFR 转换?

python3 scripts/learn.py evidence

观察并解释: 将 JSON 重放为状态机,与另一个 JVM 读取的真实 JFR 场景/转换计数比对,再执行故意损坏记录的反例检查。查看虚拟线程开始/结束与明确的 pinned 计数。

JEP 491 在 JDK 24 改变 synchronized 阻塞行为。未记录 pinned 事件不证明普遍不存在。这不是 LLM 评测。

原始资料清单

MIT 6.172 syllabus

Prerequisites and course language

course · published · 核验: 2026-11-14

Lecture 2: Bentley Rules for Optimizing Work

PDF linked from the official resource page

lecture · published · 核验: 2026-11-14

Lecture 6: Multicore Programming

PDF linked from the official resource page

lecture · published · 核验: 2026-11-14

Lecture 7: Races and Parallelism

PDF linked from the official resource page

lecture · published · 核验: 2026-11-14

Lecture 10: Measurement and Timing

PDF linked from the official resource page

lecture · published · 核验: 2026-11-14

JEP 444: Virtual Threads

Do not pool virtual threads; delivered in JDK 21

JEP · published · 核验: 2026-11-14

JEP 491: Synchronize Virtual Threads without Pinning

Summary and remaining pinning cases; delivered in JDK 24

JEP · published · 核验: 2026-11-14

Java SE 25: Virtual Threads

Scheduling; JDK Flight Recorder events for virtual threads

official-guide · published · 核验: 2026-11-14

Java SE 25: Semaphore

acquire(), release(), tryAcquire(), fairness

API · published · 核验: 2026-11-14

Java SE 25: Future

get(timeout), cancel(boolean), isCancelled(), isDone()

API · published · 核验: 2026-11-14

Java SE 25: ThreadPoolExecutor

Queuing; rejected tasks; CallerRunsPolicy

API · published · 核验: 2026-11-14

Java SE 25: RecordingFile

readEvent() and hasMoreEvents()

API · published · 核验: 2026-11-14

Vanderbilt archive: Managing the Java Lifecycle — Stopping a Java Thread via an Interrupt

2020 PDF archive, not a verified current offering

supplementary-lecture · published · 核验: 2026-11-14

Java SE 25: StructuredTaskScope

Preview API in this JDK; not compiled or exercised here

optional-preview-reading · published · 核验: 2026-11-14

Vanderbilt 项目是教师归档中的 2020 PDF,所连页面未明确该 PDF 的学期,因此只作补充阅读,不冒充第二门精选课程或当前招生项目。JEP 444 描述的是 JDK 21 历史 pinning 行为;本实验固定版本应结合 JEP 491 与 JDK 25 指南阅读。

迁移到 AI 服务场景

可把每个合成下游槽位理解为一个在途推理请求、连接或本地加速器槽位。学习目标是限制并发,并在实际工作退出时归还资源。本模型不评测模型质量、token 吞吐、供应商限流、网络或账单,也不调用模型或付费 API。

检查真实 bulkhead 保存记录 →