Appearance
Kotlin Host — Lab 索引
统一 Gradle 承载工程,所有 Kotlin labs 在此运行。
前置条件
- JDK 17+(
java -version) - 首次运行需网络下载 Gradle + Maven 依赖
可用 Lab
| # | Lab | 验证内容 | 运行命令 |
|---|---|---|---|
| 1 | 协程执行流 (coroutine_execution_flow) | Main → IO → Main 线程切换、async/await、supervisorScope、超时降级、并发限流、手写状态机等效实现 | ./gradlew runCoroutineExecutionFlow --quiet |
| 2 | 协程 Mutex / StateFlow (coroutine_mutex_stateflow) | Mutex.withLock 协程安全累加、StateFlow UI 状态快照、SharedFlow 一次性事件 | ./gradlew runCoroutineMutexStateFlow --quiet |
| 2b | Mutex 入门(同上目录) | 无锁竞态 vs Mutex;Deferred ≈ Future | ./gradlew runMutexDemo --quiet |
| 3 | 手写状态机等效(同上 lab1 独立入口) | Kotlin 手写 Executor + label + result 模拟协程状态机 | ./gradlew runManualCoroutineEquivalent --quiet |
目录结构
labs/kotlin/host/
├── README.md ← 本索引页
├── build.gradle.kts ← 统一构建(自定义 task 见下方)
├── settings.gradle.kts
├── gradlew / gradlew.bat ← Gradle Wrapper(版本锁定)
├── gradle/wrapper/
├── src/main/kotlin/
│ └── runtime_concurrency/
│ ├── coroutine_execution_flow/
│ │ ├── README.md ← Lab 1 详细文档 + 预期输出
│ │ ├── CoroutineExecutionFlowDemo.kt
│ │ ├── AdvancedCoroutinePatternsDemo.kt
│ │ └── ManualCoroutineEquivalent.kt
│ └── coroutine_mutex_stateflow/
│ ├── README.md ← Lab 2 详细文档 + 预期输出
│ ├── MUTEX_AND_JOB.md ← Mutex / Job / Android 专题
│ ├── CoroutineMutexStateFlowDemo.kt
│ └── MutexDemo.kt ← Mutex 入门(竞态对比)
└── out/ ← 编译输出(gitignored)运行
bash
cd labs/kotlin/host
chmod +x gradlew
# Lab 1: 协程执行流(完整 demo:执行流 + 手写状态机 + async 组合)
./gradlew runCoroutineExecutionFlow --quiet
# Lab 1 子集:仅手写状态机等效
./gradlew runManualCoroutineEquivalent --quiet
# Lab 2: Mutex / StateFlow / SharedFlow
./gradlew runCoroutineMutexStateFlow --quiet
# Lab 2b: Mutex 入门(竞态对比 + Deferred)
./gradlew runMutexDemo --quiet设计原则
- 源码 + README 同目录 — 每个 lab 的 README 与源码放在一起,一目了然。
- 统一依赖管理 — 所有 lab 共享一份
build.gradle.kts+ Gradle Wrapper,不重复。 - 自定义 task — 每个 lab 一个独立
./gradlewtask,无需手动拼 classpath。 - 新增 lab:在
src/main/kotlin/runtime_concurrency/下建目录 → 放源码 + README →build.gradle.kts加 task → 完工。