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)
}
}