Junior — Middle
Hoe wordt asynchroniteit geïmplementeerd bij het gebruik van coroutines?
sobes.tech AI
Antwoord van AI
Asynchroniciteit in coroutines wordt bereikt door de uitvoering te onderbreken en te hervatten zonder de threads te blokkeren. Wanneer een coroutine een operatie tegenkomt die tijd kan kosten (bijvoorbeeld een netwerkverzoek), wordt deze onderbroken (suspend), waardoor de thread vrij komt voor andere taken. Na voltooiing wordt de coroutine hervat vanaf hetzelfde punt.
Dit wordt geïmplementeerd via het mechanisme van suspend functies en de compiler, die coroutines omzet in eindige toestandsautomaten. Hierdoor kunnen asynchrone code in een sequentiële stijl worden geschreven zonder expliciete callbacks.
Voorbeeld in Kotlin:
suspend fun fetchData(): String {
delay(1000) // onderbreekt de coroutine voor 1 seconde zonder de thread te blokkeren
return "Data loaded"
}
fun main() = runBlocking {
val result = fetchData() // wacht asynchroon op het resultaat
println(result)
}