Sobes.tech
Junior — Middle

Jaka jest główna rola korutyn w programowaniu i czym różnią się od wątków?

sobes.tech AI

Odpowiedź od AI

Korutyny to lekkie wątki wykonawcze, które umożliwiają pisanie asynchronicznego i konkurencyjnego kodu w prostszy i bardziej zrozumiały sposób. W Androidzie (i Kotlinie) korutyny są używane do wykonywania zadań w tle bez blokowania głównego wątku (wątku UI).

Główne różnice między korutynami a wątkami:

  • Lekkość: korutyny zajmują znacznie mniej zasobów niż systemowe wątki.
  • Zarządzanie: korutyny są zarządzane przez planistę w aplikacji, a nie przez system operacyjny.
  • Wstrzymywanie i wznawianie: korutyny mogą być wstrzymywane w określonych punktach (suspend) i wznawiane, co upraszcza programowanie asynchroniczne.

Przykład użycia korutyny w Kotlin dla Androida:

import kotlinx.coroutines.*

fun loadData() {
    GlobalScope.launch(Dispatchers.Main) { // uruchamiamy korutynę na głównym wątku
        val data = withContext(Dispatchers.IO) { // przełączamy na wątek tła
            fetchDataFromNetwork() // długie zapytanie
        }
        updateUI(data) // aktualizacja UI
    }
}

W ten sposób korutyny pozwalają pisać kod asynchroniczny, który wygląda jak kod sekwencyjny, bez skomplikowanych callbacków i blokad.