Функция launch
Функция launch
является расширением для CoroutineScope
и запускает новую корутину.
Она возвращает объект типа Job
, который можно использовать для управления жизненным циклом корутины.
Параметры функции включают контекст корутины, режим запуска и блок кода для выполнения.
Импорт
import kotlinx.coroutines.launch
import kotlinx.coroutines.CoroutineScope
Синтаксис
fun CoroutineScope.launch(
context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> Unit
): Job
Пример
Запуск простой корутины:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000)
println("World!")
}
println("Hello")
}
Результат выполнения кода:
Hello
World!
Пример
Использование контекста корутины:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch(Dispatchers.Default) {
println("Running in ${Thread.currentThread().name}")
}
}
Результат выполнения кода:
Running in DefaultDispatcher-worker-1
Пример
Использование возвращаемого объекта Job
:
import kotlinx.coroutines.*
fun main() = runBlocking {
val job = launch {
delay(1000)
println("Job completed")
}
job.join()
println("All done")
}
Результат выполнения кода:
Job completed
All done
Пример
Отмена корутины через Job
:
import kotlinx.coroutines.*
fun main() = runBlocking {
val job = launch {
repeat(1000) { i ->
println("Job: I'm working $i")
delay(100)
}
}
delay(250)
job.cancel()
println("Job cancelled")
}
Результат выполнения кода:
Job: I'm working 0
Job: I'm working 1
Job: I'm working 2
Job cancelled
Смотрите также
-
функцию
async
,
которая запускает корутину с возвратом результата -
функцию
runBlocking
,
которая блокирует текущий поток до завершения корутины