Junior — Middle
Ako je implementovaná asynchrónnosť pri používaní korutín?
sobes.tech AI
Odpoveď od AI
Asynchrónia v korutínach sa dosahuje pozastavením a pokračovaním vykonávania bez blokovania vlákien. Keď korutina narazí na operáciu, ktorá môže trvať čas (napríklad sieťový požiadavok), je pozastavená (suspend), čím uvoľní vlákno pre iné úlohy. Po dokončení operácie sa korutina obnoví zo toho istého miesta.
Toto je realizované mechanizmom funkcií suspend a kompilátora, ktorý korutiny premení na konečné automaty stavov. Takto môžu byť písané asynchrónne kódy v sekvenčnom štýle bez explicitných spätných volaní.
Príklad v Kotlin:
suspend fun fetchData(): String {
delay(1000) // pozastaví korutinu na 1 sekundu bez blokovania vlákna
return "Data loaded"
}
fun main() = runBlocking {
val result = fetchData() // asynchrónne čaká na výsledok
println(result)
}