Skip to content

Kotlin Host — Lab 索引

统一 Gradle 承载工程,所有 Kotlin labs 在此运行。

前置条件

  • JDK 17+(java -version
  • 首次运行需网络下载 Gradle + Maven 依赖

可用 Lab

#Lab验证内容运行命令
1协程执行流 (coroutine_execution_flow)Main → IO → Main 线程切换、async/awaitsupervisorScope、超时降级、并发限流、手写状态机等效实现./gradlew runCoroutineExecutionFlow --quiet
2协程 Mutex / StateFlow (coroutine_mutex_stateflow)Mutex.withLock 协程安全累加、StateFlow UI 状态快照、SharedFlow 一次性事件./gradlew runCoroutineMutexStateFlow --quiet
2bMutex 入门(同上目录)无锁竞态 vs MutexDeferredFuture./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

设计原则

  1. 源码 + README 同目录 — 每个 lab 的 README 与源码放在一起,一目了然。
  2. 统一依赖管理 — 所有 lab 共享一份 build.gradle.kts + Gradle Wrapper,不重复。
  3. 自定义 task — 每个 lab 一个独立 ./gradlew task,无需手动拼 classpath。
  4. 新增 lab:在 src/main/kotlin/runtime_concurrency/ 下建目录 → 放源码 + README → build.gradle.kts 加 task → 完工。

对应文档