本篇解析 example-channel-06.kt。学习如何将一个生产者的任务分发给多个消费者。
1. 核心概念:一发多收
扇出模式指:一个生产者向通道发送数据,多个消费者同时从同一个通道接收数据。
特点:
- 负载均衡:多个消费者并发运行,每个消费者取走一部分数据。
- 数据不重复:一个元素只能被其中一个消费者接收,绝不会被重复处理。
2. 代码解析
1 | val producer = produceNumbers() // 生产者每 100ms 发一个数 |
3. 开发者感悟
在 Android 实际开发中,扇出模式常用于处理海量图片下载或并发网络请求。你只需要一个请求通道,后台启动 5-10 个协程作为消费者,就能极大地提高系统的整体吞吐量。