使用 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")
}
輸出:
Kotlin TimeUnit
Sleep()
函式的使用
像 Thread.sleep()
一樣,我們也可以使用 TimeUnit
來暫停執行緒的執行。
Thread
技術只接受毫秒數作為輸入,TimeUnit
接受 7 個不同的時間單位。這 7 個時間單位是:
- 納秒
- 微秒
- 毫秒
- 秒
- 分鐘
- 小時
- 天
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")
}
輸出:
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
}
輸出:
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