【Kotlin/Android Studio】処理を停止させる方法!Thread.sleepとdelay関数

この記事からわかること
- Android Studio/Kotlinで処理を停止させる方法
- Thread.sleepメソッドの使い方
- delay関数との違い
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Kotlinで処理を停止させる方法
Kotlinで処理を一時的に停止させたい場合や時間を稼ぎたい場合は以下の2つの関数を使用することで処理を停止させることができます。
- Thread.sleep()
- delay()
Thread.sleep()の使い方
Thread
クラスの持つsleep
は指定したミリ秒数だけスレッドを一時停止させるメソッドです。
Thread.sleep(10000) // 10秒間のスリープ
呼び出しているスレッドを一時停止させるものなのでマルチスレッドで処理を実行している場合は呼び出していないスレッドは動作し続けます。
fun main() {
// スレッド1
Thread {
for (i in 1..5) {
println("Thread 1: $i")
Thread.sleep(1000) // 1秒間のスリープ
}
}.start()
// スレッド2
Thread {
for (i in 1..5) {
println("Thread 2: $i")
Thread.sleep(500) // 0.5秒間のスリープ
}
}.start()
}
エラーハンドリング
Thread.sleep
を実行中に割り込みが発生した場合はInterruptedException
という例外がスローされる可能性があります。スレッドが明示的に中断された時などに発生するようです。そのためtry-catch
ブロックでエラーハンドリングをしておくと安全です。
try {
Thread.sleep(3000)
} catch (e: InterruptedException) {
e.printStackTrace()
}
TimeUnit.SECONDS.sleep()
ミリ秒数ではなく秒数で指定したい場合はTimeUnit.SECONDS.sleep()
を使用することでも実装できます。
TimeUnit.SECONDS.sleep(3)
delay()の使い方
delay
メソッドはコルーチンの中で使用する一時停止関数です。引数にはミリ秒数を指定します。
runBlocking {
delay(10000) // 10秒間のスリープ
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。