gpt4 book ai didi

kotlin - runBlocking 中有两个以上等待

转载 作者:IT老高 更新时间:2023-10-28 13:40:23 25 4
gpt4 key购买 nike

我在 Kotlin 中的 await 有问题,如果我只使用 2 个 awaits,这个 runBlocking block 可以工作 10 秒,但是当我尝试使用 4 个 awaits,它工作20秒。据我了解,runBlocking 中只有两个异步线程。如何增加此计数?

fun testFun() {
val z1 = async { Thread.sleep(10000) }
val z2 = async { Thread.sleep(10000) }
val z3 = async { Thread.sleep(10000) }
val z4 = async { Thread.sleep(10000) }

runBlocking {
z1.await()
z2.await()
z3.await()
z4.await() // works 20 seconds
}
}

最佳答案

使用 async { ... } 您可以让标准库选择一个默认上下文来运行您的协程。我猜在您的情况下它恰好是一个只有两个线程的线程池。

要控制发生的事情,请使用

async(MyDispatcher) { ... }

作为一个简单的例子,你可以在哪里定义

val MyDispatcher = Executors.newFixedThreadPool(4).asCoroutineDispatcher()

请记住,关闭线程池现在是您的责任:

MyDispatcher.close()

关于kotlin - runBlocking 中有两个以上等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com