O que é Coroutine em Kotlin?

Coroutines são o mecanismo do Kotlin para lidar com programação assíncrona de forma simples e eficiente. Em vez de usar callbacks aninhados ou threads pesadas, você escreve código assíncrono que parece sequencial — fácil de ler, fácil de manter.

Pense nas coroutines como “threads leves”. Você pode rodar milhares delas sem estourar a memória, porque elas não criam threads do sistema operacional — são gerenciadas pelo próprio Kotlin.

Por que usar coroutines?

O problema clássico de código assíncrono é o tal do “callback hell”. Coroutines resolvem isso permitindo que você escreva código que parece síncrono, mas executa de forma assíncrona por baixo dos panos.

Exemplo básico

import kotlinx.coroutines.*

fun main() = runBlocking {
    println("Início")

    launch {
        delay(1000)
        println("Coroutine finalizada!")
    }

    println("Fazendo outras coisas...")
    delay(1500)
    println("Fim")
}

Saída:

Início
Fazendo outras coisas...
Coroutine finalizada!
Fim

O launch cria uma nova coroutine, e o delay suspende a execução sem bloquear a thread. Enquanto uma coroutine tá esperando, outras podem rodar tranquilamente.

Conceitos fundamentais

  • CoroutineScope: define o ciclo de vida das coroutines
  • launch: inicia uma coroutine que não retorna valor
  • async: inicia uma coroutine que retorna um resultado
  • suspend: marca uma função que pode ser suspensa
  • Dispatchers: controlam em qual thread a coroutine vai rodar

Exemplo com chamada de rede simulada

import kotlinx.coroutines.*

suspend fun buscarDados(): String {
    delay(2000) // Simula uma chamada de rede
    return "Dados carregados com sucesso"
}

fun main() = runBlocking {
    println("Buscando dados...")
    val resultado = buscarDados()
    println(resultado)
}

Quando usar?

Coroutines são essenciais para operações de I/O (chamadas de rede, banco de dados, leitura de arquivos), processamento em background e qualquer tarefa que não deveria travar a interface do usuário. No Android, são praticamente obrigatórias hoje em dia.