Ответ
launch и async — основные строители корутин.
launchзапускает корутину без возврата результата (возвращаетJob).asyncвозвращаетDeferred<T>(аналогFuture), результат можно получить черезawait().
Пример:
val job = launch {
delay(1000)
println("Done")
}
val deferred = async {
delay(500)
"Result"
}
println(deferred.await())
job.join()
Контекст:
Dispatchers.Default— CPU-интенсивные задачи.Dispatchers.IO— работа с сетью/диском.Dispatchers.Main— UI-поток (Android).
Отмена через job.cancel() или coroutineContext.cancel().