Пауза в Kotlin
Когда корутине нужно подождать, не стоит крутить
пустой цикл на потоке. Функция delay принимает
длительность в миллисекундах, приостанавливает
корутину и позволяет потоку заняться другой
работой, пока не истечет таймер.
После возобновления выполнение продолжается со следующей строки. Проверить это можно на двух метках до и после паузы:
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
fun main() {
runBlocking {
println("tick")
delay(100)
println("tock")
}
}
Между "tick" и "tock" проходит
не меньше заданной задержки. Поток при этом не
заблокирован навсегда: корутина снята с
выполнения до срабатывания таймера.
Несколько пауз подряд задают ритм шагам. Каждый
delay откладывает только текущую корутину,
не останавливая весь процесс:
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
fun main() {
runBlocking {
repeat(3) { index ->
println(index)
delay(50)
}
}
}
В консоли появляются 0, 1 и
2 с промежутками между строками. Так
delay разносит печать во времени, оставаясь
внутри одной корутины runBlocking.
В runBlocking выведите "wait",
сделайте паузу на 200 миллисекунд и
напечатайте "go".
Три раза подряд выведите букву "x",
между строками делая паузу на 30
миллисекунд. Весь цикл разместите внутри
runBlocking.