使用 Kotlin sleep 函式暫停執行緒的執行

Kailash Vaviya 2023年1月30日 2022年5月31日
  1. Kotlin Thread.Sleep() 函式的使用
  2. Kotlin TimeUnit Sleep() 函式的使用
  3. Kotlin Delay() 函式的使用
使用 Kotlin sleep 函式暫停執行緒的執行

Java 有一個 wait() 函式可以暫停當前執行緒的執行。執行緒休眠直到另一個執行緒進入並通知休眠執行緒。

但是 Kotlin 中是否有等價物?Kotlin 沒有 wait() 函式,但它具有 sleep() 函式。

Kotlin sleep() 函式暫停特定協程的執行。雖然這不會暫停執行,但它允許執行其他協程。

本文介紹如何在 Kotlin 中使用 sleep() 函式。除此之外,我們還將學習另一種使用 delay() 函式暫停協程的方法。

Kotlin Thread.Sleep() 函式的使用

我們可以使用 Thread.sleep() 函式讓協程進入睡眠狀態並允許其他獨立協程執行。

使用 sleep() 函式的語法是:

Thread.sleep(milliseconds)

這是一個示例,我們使用 Kotlin sleep() 函式將協程的執行暫停 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")
}

輸出:

從 Thread 使用 Kotlin 睡眠功能

Kotlin TimeUnit Sleep() 函式的使用

Thread.sleep() 一樣,我們也可以使用 TimeUnit 來暫停執行緒的執行。

Thread 技術只接受毫秒數作為輸入,TimeUnit 接受 7 個不同的時間單位。這 7 個時間單位是:

  1. 納秒
  2. 微秒
  3. 毫秒
  4. 分鐘
  5. 小時

TimeUnit 自動將傳遞的值轉換為 sleep() 函式接受的毫秒數。

TimeUnit 方法是 java.util.concurrent 庫的一部分。因此,我們需要匯入 concurrent 庫來使用此方法。

這是一個示例,展示了來自 TimeUnit 的 Kotlin sleep() 函式。

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 睡眠功能

Kotlin Delay() 函式的使用

除了 Kotlin 的 sleep() 函式,我們還可以使用 delay() 函式來暫停協程的執行。delay() 函式也接受毫秒作為輸入。

這是一個展示 Kotlin delay() 函式用法的示例。

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 延遲功能

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