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.IOpara operações relacionadas com entrada/saída que possam bloquear a thread. - Use
Dispatchers.Defaultpara 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()
}