前置知识: Kotlin

Channel与BroadcastChannel

00:00
1 min Advanced 2026/6/14

Kotlin Channel与BroadcastChannel详解。

1. Channel

val channel = Channel<Int>()

launch { channel.send(1) }
val value = channel.receive()  // 1

1.1 容量类型

类型说明
RENDEZVOUS无缓冲(默认)
UNLIMITED无限缓冲
BUFFERED固定缓冲(默认64)
CONFLATED覆盖旧
Channel<Int>(capacity = Channel.BUFFERED)
Channel<Int>(capacity = Channel.CONFLATED)

2. Channel 操作

// 遍历接收
for (item in channel) {
    println(item)
}

// produce 创建生产者
val producer = produce {
    repeat(10) { send(it) }
}

// consumeEach 消费
channel.consumeEach { println(it) }

3. BroadcastChannel(已废弃)

使用 SharedFlow 替代

// 旧方式(已废弃)
// val broadcast = BroadcastChannel<Int>(1)

// 新方式
val broadcast = MutableSharedFlow<Int>(
    replay = 0,
    extraBufferCapacity = 1,
    onBufferOverflow = BufferOverflow.DROP_OLDEST
)

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式