網頁

2017/9/21

Java Thread.sleep()

Java的Thread.sleep(long millis)方法可以使目前的執行緒暫停執行一段時間,傳入的參數為要暫停的時間長短,單位為毫秒(millisecond)

Thread.sleep()範例。每執行一段句子便會暫停3秒。

public class PttMessages {
  
  public static void main(String[] args) throws InterruptedException {
    
    String messages[] = {
        "→ bluewinds:我在香港迪士尼有遇到邱淑貞 和她坐同艘船~搞到最後 我   11/02 21:11",
        "推 FackPtt:  就射出來了                                                                              11/02 21:12",
        "→ bluewinds:們都在看她 沒有人聽解說人員講話~~她本人人超好~~一聽  11/02 21:12",
        "推 ZBeta:    就射出來了                                                                              11/02 21:13",
        "→ bluewinds:到我們是台灣來的 就很開心的和我們合照~~後來去廁所又  11/02 21:12",
        "→ sephen:   射出來了                                                                                  11/02 21:13"
    };
    
    for (int i = 0;i < messages.length;i++) {
      System.out.println(messages[i]);
      Thread.sleep(3000); // 暫停3秒
    }
    
  }
}

執行後每條句子印出的時間都會間隔3秒。


當目前執行緒的睡眠(sleep)被中斷時會拋出InterruptedException,所以必須進行例外處理。

下面範例呼叫interrupt()方法來中斷執行緒的睡眠,當執行緒開始執行時便馬上因為呼叫了sleep()而進入睡眠,然而Main執行緒緊接著執行了interrupt()方法,所以原本睡眠的執行緒被中斷並拋出InterruptedException錯誤,轉至catch處理。

public class Test {

  public static void main(String[] args) {
    
    Thread thread = new Thread(new Runnable(){
      @Override
      public void run() {
        try {
          Thread.sleep(1000);
          System.out.println("執行緒執行...");
        } catch (InterruptedException e) {
          System.out.println("執行緒中斷了...");
          return;
        }
      }
    });
    
    thread.start();
    thread.interrupt();
    
  }
  
}

參考:

1 則留言: