协程共享执行的线程。 从协程调用 runBlocking 构建器时,它会阻塞底层线程,并阻止其他协程使用此资源。 这可能会导致性能问题,在糟糕的情况下还会导致线程饥饿。
它提供了从协程基元(挂起函数或构建器)到 runBlocking 构建器的潜在调用栈。
示例:
suspend fun main() {
foo()
}
fun foo() {
runBlocking { suspendFunction() }
}
潜在解决方案:
suspend fun main() {
foo()
}
suspend fun foo() {
suspendFunction()
}
使用浏览具有重写的函数选项可以配置虚拟函数的分析: