Sobes.tech
Junior — Middle

Kako se upravlja konkurentnim zadacima pri korišćenju korutina u programskom jeziku?

sobes.tech АИ

Одговор од АИ

U Kotlinu, korutine omogućavaju upravljanje konkurentnim zadacima bez blokiranja niti, koristeći lagane niti izvršenja. Upravljanje se vrši putem:

  • CoroutineScope — opseg vidljivosti za korutine, koji kontroliše njihov životni ciklus.
  • Dispatcher — određuje na kojoj niti ili poolu niti će se izvršiti korutina (npr. Dispatchers.IO za ulaz/izlaz, Dispatchers.Default za CPU-intenzivne zadatke).
  • Job — objekat koji predstavlja zadatak korutine, pomoću kojeg se može otkazati ili pratiti stanje.

Primer pokretanja više konkurentnih korutina:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job1 = launch(Dispatchers.Default) {
        // Konkurentni zadatak 1
        delay(1000)
        println("Zadatak 1 završen")
    }
    val job2 = launch(Dispatchers.IO) {
        // Konkurentni zadatak 2
        delay(500)
        println("Zadatak 2 završen")
    }
    joinAll(job1, job2) // Čekamo da se oba zadatka završe
}

Na ovaj način, korutine omogućavaju efikasno upravljanje konkurentnošću, prebacujući se između zadataka bez blokiranja niti i koristeći dispatchere za optimalnu raspodelu opterećenja.