Для этого вы можете использовать Kotlin сопрограмм.
Выдержка из документации :
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println("World!") // print after delay
}
println("Hello,") // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
Вы можете циклически выполнять операции и потреблять значительно меньше ресурсов:
fun main() = runBlocking {
repeat(100_000) { // launch a lot of coroutines
launch {
delay(1000L)
print(".")
}
}
}
Может пригодиться следующая статья: Kotlin сопрограммы - Thread.sleep () против задержки
Вы также можете рассмотреть CountDownTimer