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.