本篇解析 example-channel-03.kt。学习一种更简便的通道创建方式。
1. 核心构建器:produce
produce 是一个协程构建器,它会启动一个新的协程并返回一个 ReceiveChannel。
优点:
- 封装性:它将“启动协程”与“发送逻辑”封装在一起。
- 自动关闭:当
produce块内的代码执行完毕后,它会**自动调用close()**。
2. 核心操作:consumeEach
consumeEach 是一个扩展函数,用于替代传统的 for 循环。
- 安全消费:它保证了在消费完数据后,不论成功还是异常,都会自动处理资源释放。
3. 开发者感悟
produce 是处理异步流的工业级选择。它就像是协程里的“工厂”,源源不断地生产零件并直接交付给消费者,且自带“完工关机”功能,极大减少了由于忘记关闭 Channel 导致的资源泄漏。