Sobes.tech
Junior — Middle

Como é que a utilização de corutinas e threads difere na implementação de tarefas assíncronas?

sobes.tech IA

Resposta da IA

Os threads (Fios) são objetos do sistema que permitem executar várias tarefas em paralelo, cada uma com sua própria pilha de chamadas e contexto de execução. Criar e alternar entre threads é bastante dispendioso em recursos, e com um grande número de threads pode ocorrer uma sobrecarga.

As corrotinas (Coroutines) são componentes leves que permitem pausar e retomar a execução de funções sem criar novas threads. Elas funcionam dentro de uma ou várias threads, mas permitem escrever código assíncrono de forma sequencial e gerir tarefas de forma eficiente sem bloqueios.

Principais diferenças:

  • Threads são pesados, corrotinas são leves.
  • Threads requerem troca de contexto ao nível do SO, corrotinas ao nível da linguagem.
  • As corrotinas facilitam a escrita de código assíncrono mais simples e legível.

Exemplo de uma corrotina em Kotlin para Android:

GlobalScope.launch(Dispatchers.IO) {
    val data = fetchDataFromNetwork() // operação assíncrona
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}