Sobes.tech
Junior — Middle

Quais são as diferenças entre Dispatchers.IO e Dispatchers.Default em Coroutine e em que casos é preferível usá-los?

sobes.tech IA

Resposta da IA

Dispatchers.IO e Dispatchers.Default são os programadores padrão de corrotinas em Kotlin, destinados a diferentes tipos de tarefas.

  • Dispatchers.IO é otimizado para operações de entrada/saída (I/O), como leitura/gravação de ficheiros, pedidos de rede, trabalho com bases de dados. Utiliza um grupo de threads que pode ser expandido conforme necessário para não bloquear a thread principal.

  • Dispatchers.Default destina-se a executar tarefas intensivas de CPU, como cálculos, processamento de dados, algoritmos complexos. Utiliza um grupo de threads cujo tamanho geralmente é igual ao número de núcleos de processador disponíveis.

Quando usar:

  • Use Dispatchers.IO para operações relacionadas com entrada/saída que possam bloquear a thread.
  • Use Dispatchers.Default para tarefas de cálculo pesado, para não bloquear a thread principal e usar eficientemente a CPU.

Exemplo:

// Leitura de ficheiro — tarefa de I/O
withContext(Dispatchers.IO) {
    val data = file.readText()
}

// Processamento de dados — tarefa de CPU
withContext(Dispatchers.Default) {
    val result = heavyComputation()
}