协程进阶:通道 07. 扇入模式 (Fan-in)

本篇解析 example-channel-07.kt。学习如何让多个生产者向同一个通道汇总数据。

1. 核心概念:多发一收

扇入模式指:多个生产者并发地向同一个通道发送数据,一个消费者负责统一处理。

特点:

  • 并发汇聚:不同来源的数据被汇聚到单一的流中,方便统一管理。
  • 天然公平:Channel 的调度保证了每个发送者都有机会把数据塞进通道,不会造成某个发送者长期饥饿。

2. 代码解析

1
2
3
4
val channel = Channel<String>()
launch { sendString(channel, "foo", 200L) } // 生产者 1
launch { sendString(channel, "BAR!", 500L) } // 生产者 2
repeat(6) { println(channel.receive()) } // 单一消费者

3. 开发者感悟

扇入模式在 Android 中非常适合处理多源数据汇聚。例如:你的 App 可能同时从网络轮询、本地传感器和 Socket 长连接获取数据。你可以开启 3 个协程作为生产者,它们都把数据塞进同一个 Channel,然后由主界面的 ViewModel 作为消费者进行统一分发和 UI 更新。

,