Sobes.tech
Junior — Middle

Como é gerida a concorrência de tarefas ao usar coroutines numa linguagem de programação?

sobes.tech IA

Resposta da IA

No Kotlin, as corrotinas permitem gerir tarefas concorrentes sem bloquear threads, usando threads leves de execução. A gestão é feita através de:

  • CoroutineScope — âmbito de visibilidade para as corrotinas, que controla o seu ciclo de vida.
  • Dispatcher — determina em qual thread ou pool de threads a corrotina será executada (por exemplo, Dispatchers.IO para entrada/saída, Dispatchers.Default para tarefas intensivas de CPU).
  • Job — objeto que representa uma tarefa de corrotina, com o qual se pode cancelar ou acompanhar o seu estado.

Exemplo de lançamento de várias corrotinas concorrentes:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job1 = launch(Dispatchers.Default) {
        // Tarefa concorrente 1
        delay(1000)
        println("Tarefa 1 concluída")
    }
    val job2 = launch(Dispatchers.IO) {
        // Tarefa concorrente 2
        delay(500)
        println("Tarefa 2 concluída")
    }
    joinAll(job1, job2) // Espera pela conclusão de ambas as tarefas
}

Dessa forma, as corrotinas permitem gerir eficientemente a concorrência, alternando entre tarefas sem bloquear threads e usando despachantes para uma distribuição ótima da carga.