Java多線程之線程的暫停
下面該稍微休息一下了呢……不過,這里說的是線程休息,不是我們哦。本節將介紹一下讓線程暫停運行的方法。
線程Thread 類中的sleep 方法能夠暫停線程運行,Sleep 也就是“休眠”的意思。sleep 方法是Thread 類的靜態方法。
下面這條語句可以將當前的線程(執行這條語句的線程)暫停約1000 毫秒(約1 秒)。
Thread.sleep(1000);
如下代碼會輸出10 次Good! 字符串,而每輸出1 次,線程就暫停約1000 毫秒(約1 秒)。也就是每隔約1 秒就輸出1 次Good! 字符串
每隔約1 秒輸出1 次Good !的程序(Main.java)
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("Good!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
sleep 方法的調用放在了try...catch 中, 這是因為,sleep 方法有可能會拋出InterruptedException 異常。InterruptedException 異常能夠取消線程的處理。
在實際程序中,sleep 的使用頻率並沒有這么高。最多也就是在設計一定時間后自動關閉的對話框,或把按鈕按下瞬間的狀態顯示給用戶看時才會用到。
在sleep 方法中,停止時間也可以指定到納秒(10-9 秒)單位,語法如下。
Thread.sleep( 毫秒, 納秒);
不過,通常情況下Java 平台運行環境無法實現這么精確的控制。具體的精確程度依Java 平台運行環境而不同。
如何喚醒呢:
如果要中途喚醒被Thread.sleep 休眠的線程,則可以使用interrupt 方法。
參考:圖解Java多線程設計模式
