Nik*_*han 8 kotlin kotlin-coroutines
我在Kotlin有一个问题,如果我只使用2 await秒,这个runBlocking块可以工作10秒,但是当我尝试使用4 await秒时,它可以工作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
}
}
Run Code Online (Sandbox Code Playgroud)
随着async { ... }你让标准库选择在运行协同程序默认的情况下,我想在你的情况下,它碰巧是一个线程池只有两个线程.
为了控制发生的事情,请使用
async(MyDispatcher) { ... }
Run Code Online (Sandbox Code Playgroud)
其中,作为一个简单的例子,您可以定义
val MyDispatcher = Executors.newFixedThreadPool(4).asCoroutineDispatcher()
Run Code Online (Sandbox Code Playgroud)
请记住,关闭线程池现在是您的责任:
MyDispatcher.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |