Junior — Middle
Jak se liší použití korutin a vláken při implementaci asynchronních úkolů?
sobes.tech AI
Odpověď od AI
Vlákna (Threads) jsou systémové objekty, které umožňují spouštět více úloh současně, každé s vlastním zásobníkem volání a kontextem vykonávání. Vytváření a přepínání mezi vlákny je poměrně náročné na zdroje a při velkém počtu vláken může dojít k přetížení.
Korutiny (Coroutines) jsou lehké komponenty, které umožňují pozastavit a znovu spustit vykonávání funkcí bez vytváření nových vláken. Fungují v rámci jednoho nebo více vláken, ale umožňují psát asynchronní kód sekvenčně a efektivně spravovat úlohy bez blokování.
Hlavní rozdíly:
- Vlákna jsou těžká, korutiny jsou lehké.
- Vlákna vyžadují přepínání kontextu na úrovni OS, korutiny na úrovni jazyka.
- Korutiny umožňují psát asynchronní kód jednodušší a čitelnější.
Příklad korutiny v Kotlin pro Android:
GlobalScope.launch(Dispatchers.IO) {
val data = fetchDataFromNetwork() // asynchronní operace
withContext(Dispatchers.Main) {
updateUI(data)
}
}