介紹
Java的Thread.sleep()
方法可用於暫停當前執行緒的執行,時間單位為毫秒。毫秒的參數值不能為負。否則,將拋出IllegalArgumentException
。
sleep(long millis, int nanos)
是另一個方法,可用於暫停當前執行緒的執行,時間單位為毫秒和納秒。允許的納秒值在0
和999999
之間。
在本文中,您將了解Java的Thread.sleep()
。
Thread.sleep的工作原理
Thread.sleep()
與執行緒調度器交互,將當前執行緒置於等待狀態一段指定的時間。一旦等待時間結束,執行緒狀態將變為可執行狀態,並等待CPU進一步執行。當前執行緒睡眠的實際時間取決於作業系統中的執行緒調度器。
Java Thread.sleep 重要注意事項
- 它總是暫停當前執行緒的執行。
- 執行緒睡眠並在開始執行之前所花費的實際時間取決於系統計時器和排程器。對於一個安靜的系統,睡眠的實際時間接近指定的睡眠時間,但對於一個繁忙的系統,它會稍微長一些。
Thread.sleep()
不會丟失任何監視器或鎖定當前線程所獲得的。- 任何其他線程都可以在睡眠中中斷當前線程,在這種情況下會拋出
InterruptedException
。
Java Thread.sleep 範例
這裡是一個使用 Thread.sleep()
暫停主執行緒執行 2 秒(2000 毫秒)的範例程序:
ThreadSleep.java
package com.journaldev.threads;
public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
}
}
首先,此代碼將當前系統時間以毫秒為單位存儲。然後,它睡眠 2000 毫秒。最後,此代碼打印出新的當前系統時間減去之前的當前系統時間:
OutputSleep time in ms = 2005
請注意,此差異並不精確為 2000 毫秒。這是由於 Thread.sleep()
的工作方式和線程排程器的特定於操作系統的實現。
結論
在這篇文章中,您了解了關於Java的Thread.sleep()
。
繼續通過更多的Java教程來學習。
Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java