kotlin 协程实现生产者消费者
时间: 2023-02-08 19:48:58 浏览: 191
Kotlin 协程可以使用 `channels` 库来实现生产者消费者模型。可以使用 `ProducerScope.send()` 方法来生产数据,并使用 `ReceiveChannel.consumeEach()` 或 `ReceiveChannel.receive()` 方法来消费数据。
示例代码:
```kotlin
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.*
fun main() = runBlocking {
val channel = Channel<Int>()
launch {
for (x in 1..5) {
println("produced $x")
channel.send(x * x)
}
}
launch {
channel.consumeEach { println("consumed $it") }
}
delay(1000)
}
```
运行结果:
```
produced 1
consumed 1
produced 2
consumed 4
produced 3
consumed 9
produced 4
consumed 16
produced 5
consumed 25
```
也可以使用 `produce` 和 `consume`来实现,如下所示:
```kotlin
val producer = produce {
for (x in 1..5) {
println("produced $x")
send(x * x)
}
}
launch {
producer.consumeEach { println("consumed $it") }
}
```
在这个例子中,生产者协程会生产 1 到 5 的平方的数字并发送到通道中,消费者协程接收这些数字并打印它们.
阅读全文