【发布时间】:2020-07-22 05:47:06
【问题描述】:
为什么线程阻塞3秒后1秒后打印'a'?
当一个线程被阻塞时,它不能进行任何计算,直到它被解锁。这个线程被 Thread.sleep() 阻塞时,怎么可能执行 println('a')?
import kotlinx.coroutines.*
fun main() = runBlocking(Dispatchers.Default) {
GlobalScope.launch(Dispatchers.Default) {
delay(1000L)
println("a")
}
Thread.sleep(3000L)
}
【问题讨论】:
-
Dispatchers.Default 的最大线程数限制与您的 CPU 的核心数相同,例如,如果您有 4 个核心,则最多可以生成 4 个线程。
标签: multithreading kotlin coroutine kotlin-coroutines