Was ist der Unterschied zwischen runBlocking und coroutineScope in Kotlin Coroutines?
Hallo Kollegen! Ich habe begonnen, Kotlin Coroutines zu lernen und bin auf zwei Funktionen gestoßen, die mir sehr ähnlich erscheinen: runBlocking und coroutineScope. Ich habe die Dokumentation gelesen, aber ihr Verhalten ist mir noch nicht klar.
Hier ist ein Beispiel, das ich geschrieben habe:
fun main() = runBlocking {
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
Und ein weiteres:
fun main() = runBlocking {
coroutineScope {
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
}
Beide Beispiele geben zuerst "Hello," und nach einer Sekunde "World!" aus. Aber ich vermute, dass es einen Unterschied gibt und dieser wichtig ist. Worin besteht er?
Konkret interessiert mich:
- Warum blockiert
runBlockingden aktuellen Thread, währendcoroutineScopedies nicht tut? - Wie verhalten sich diese Funktionen in der Praxis?