Ответ
launch – запускает корутину без возврата результата (fire-and-forget).
async – запускает корутину и возвращает Deferred<T>, позволяя получить результат через await().
cancel() – отменяет Job и все его дочерние корутины.
join() – приостанавливает текущую корутину до завершения Job.
cancelAndJoin() – комбинация cancel() и join().
Пример:
val job = launch {
delay(1000)
println("Done")
}
job.join() // Ждём завершения
Доп. методы:
isActive– проверяет, не отменён ли Job.start()– запускает ленивую корутину (если создана черезlaunch(start = CoroutineStart.LAZY)).