Flow 基础:02. Sequence 同步惰性序列

本篇解析 example-flow-02.kt。探讨 Kotlin 标准库中的 Sequence(序列)。

1. 什么是 Sequence?

Sequence<T> 提供了一种惰性求值的机制。

特点:

  • 按需计算:只有在真正需要下一个元素(如调用 forEach)时,才会执行 sequence { ... } 块内的代码。
  • 节省内存:不需要像 List 那样一次性在内存中存储所有元素。
  • **yield()**:在 sequence 构建器中,使用 yield(n) 来产出值。

2. 局限性:同步阻塞

虽然 Sequence 是惰性的,但它是同步的。

  • sequence { ... } 块内,你不能调用挂起函数(如 delay)。
  • 如果你在其中调用了 Thread.sleep(如本例所示),它会阻塞当前执行线程

3. 开发者感悟

Sequence 非常适合处理 CPU 密集型的大数据集合,但不适合处理包含等待逻辑的异步任务。如果你需要在流式产出数据的同时不阻塞线程,那么你需要的是 Flow

,