Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpCrJb 159 of 299 menu
◀ ▶

Дескриптор в Kotlin

Функция launch не только стартует корутину, но и возвращает дескриптор - объект типа Job. По нему видно, жива ли еще задача, и позже можно явно дождаться завершения или отменить работу.

Переменную с типом Job получают прямым присваиванием результата launch внутри runBlocking:

import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking fun main() { runBlocking { val ticket: Job = launch { delay(100) println("ready") } println(ticket.isActive) } }

Сразу после старта флаг isActive обычно true: корутина еще не завершилась. Когда внутри напечатается "ready", задача закроется, и тот же флаг станет ложным.

Несколько дескрипторов можно хранить отдельно, если фоновых задач больше одной:

import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking fun main() { runBlocking { val north: Job = launch { println("N") } val south: Job = launch { println("S") } println(north.isActive) println(south.isActive) } }

Сохраните результат фонового запуска с печатью "job" в переменную типа Job. До конца runBlocking выведите значение isActive этой переменной.

Запустите две фоновые задачи с метками "one" и "two". Для каждой храните свой Job и напечатайте оба флага isActive подряд в одной строке через пробел.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить