Sobes.tech
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)
    }
}