Kotlin の Sleep 関数を使用してスレッドの実行を一時停止する

Kailash Vaviya 2023年1月30日
  1. KotlinThread.Sleep() 関数の使用
  2. KotlinTimeUnit``Sleep() 関数の使用
  3. KotlinDelay() 関数の使用
Kotlin の Sleep 関数を使用してスレッドの実行を一時停止する

Java には、現在のスレッドの実行を一時停止する wait() 関数があります。スレッドは、別のスレッドが入り、スリープしているスレッドに通知するまでスリープします。

しかし、Kotlin で利用可能な同等のものはありますか?Kotlin には wait() 関数はありませんが、sleep() 関数はあります。

Kotlin の sleep() 関数は、特定の coroutine の実行を一時停止します。これにより実行が一時停止することはありませんが、他の coroutine の実行が可能になります。

この記事では、Kotlin で sleep() 関数を使用する方法について説明します。それに加えて、delay() 関数を使用して coroutine を一時停止する別の方法も学習します。

KotlinThread.Sleep() 関数の使用

Thread.sleep() 関数を使用して、コルーチンをスリープ状態にし、他の独立したコルーチンを実行できるようにすることができます。

sleep() 関数を使用するための構文は次のとおりです。

Thread.sleep(milliseconds)

これは、Kotlinsleep() 関数を使用して、coroutine の実行を 3 秒中断する例です。

fun main() {

    println("Suspending execution")

    try {
        // making the coroutine sleep for 3 seconds
        Thread.sleep(3000)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }

    println("Resuming execution")
}

出力:

スレッドからの Kotlin スリープ機能の使用

KotlinTimeUnit``Sleep() 関数の使用

Thread.sleep() と同様に、TimeUnit を使用してスレッドの実行を一時停止することもできます。

Thread 手法は入力としてミリ秒数のみを受け入れますが、TimeUnit は 7つの異なる時間単位を受け入れます。これらの 7つの時間単位は次のとおりです。

  1. ナノ秒
  2. マイクロ秒
  3. ミリ秒
  4. 時間

TimeUnit は、渡された値を自動的にミリ秒に変換します。これは、sleep() 関数が受け入れます。

TimeUnit メソッドは、java.util.concurrent ライブラリの一部です。したがって、このメソッドを使用するには、concurrent ライブラリをインポートする必要があります。

これは、TimeUnit の Kotlinsleep() 関数を示す例です。

import java.util.concurrent.TimeUnit

fun main() {
    println("Suspending execution")

    try {
        // // making the coroutine sleep for 3 seconds
        TimeUnit.SECONDS.sleep(3)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }
    println("Resuming execution")
}

出力:

TimeUnit から Kotlin の sleep 関数を使用する

KotlinDelay() 関数の使用

Kotlin の sleep() 関数に加えて、delay() 関数を使用して、coroutine の実行を一時停止することもできます。delay() 関数は、ミリ秒を入力として受け入れます。

Kotlindelay() 関数の使用法を示す例を次に示します。

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch { // launches a new coroutine
        delay(2000L) // This delays the execution by 2 seconds allowing other coroutines to run independently
        println("welcome!") // This will be printed after the delay
    }
    print("Hi and ") // This will be printed first since the other coroutine is delayed
}

出力:

Kotlin の delay 関数の使用例

著者: Kailash Vaviya
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn