Sobes.tech
Junior — Middle

Ako sa líši použitie korutín a vlákien pri implementácii asynchrónnych úloh?

sobes.tech AI

Odpoveď od AI

Vlákná (Threads) sú systémové objekty, ktoré umožňujú vykonávať viacero úloh paralelne, každé so svojím vlastným zásobníkom volaní a kontextom vykonávania. Vytváranie a prepínanie medzi vláknami je dosť náročné na zdroje, a pri veľkom počte vlákien môže dôjsť k nadmernému zaťaženiu.

Korutiny (Coroutines) sú ľahké komponenty, ktoré umožňujú pozastaviť a pokračovať vo vykonávaní funkcií bez vytvárania nových vlákien. Fungujú v rámci jedného alebo viacerých vlákien, ale umožňujú písanie asynchrónneho kódu sekvenčne a efektívne spravovať úlohy bez blokovania.

Hlavné rozdiely:

  • Vlákna sú ťažké, korutiny sú ľahké.
  • Vlákna vyžadujú prepínanie kontextu na úrovni OS, korutiny na úrovni jazyka.
  • Korutiny umožňujú písanie asynchrónneho kódu jednoduchšie a čitateľnejšie.

Príklad korutiny v Kotlin pre Android:

GlobalScope.launch(Dispatchers.IO) {
    val data = fetchDataFromNetwork() // asynchrónna operácia
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}