Java 執行緒 sleep() 方法



描述

Java Thread sleep(long millis, int nanos) 方法使當前正在執行的執行緒休眠指定毫秒數加上指定納秒數,受系統計時器和排程程式的精度和準確性的影響。

宣告

以下是 java.lang.Thread.sleep() 方法的宣告

public static void sleep(long millis, int nanos) throws InterruptedException

引數

  • millis − 這是以毫秒為單位的休眠時間長度。

  • nanos − 這是 0-999999 之間的額外納秒數,用於休眠。

返回值

此方法不返回任何值。

異常

  • IllegalArgumentException − 如果 millis 的值為負數或 nanos 的值不在 0-999999 範圍內。

  • InterruptedException − 如果任何執行緒已中斷當前執行緒。當丟擲此異常時,當前執行緒的中斷狀態將被清除。

示例:在多執行緒環境中使用 sleep 用於執行緒

以下示例演示了 Java Thread sleep() 方法的使用。在此程式中,我們透過實現 Runnable 介面建立了一個執行緒類 ThreadDemo。在 run 方法中,一個 for 迴圈正在執行,我們在這裡呼叫 sleep() 方法來建立給定的延遲。在 main() 方法中,建立了兩個 ThreadDemo 類的執行緒並啟動以列印結果。

package com.tutorialspoint;

public class ThreadDemo implements Runnable {

   Thread t;

   public void run() {
      for (int i = 10; i < 13; i++) {

         System.out.println(Thread.currentThread().getName() + "  " + i);
         try {
            // thread to sleep for 1000 milliseconds plus 500 nanoseconds
            Thread.sleep(1000, 500);
         } catch (Exception e) {
            System.out.println(e);
         }
      }
   }

   public static void main(String[] args) throws Exception {
      Thread t = new Thread(new ThreadDemo());
      // this will call run() function
      t.start();

      Thread t2 = new Thread(new ThreadDemo());
      // this will call run() function
      t2.start();
   }
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Thread-0  10
Thread-1  10
Thread-0  11
Thread-1  11
Thread-0  12
Thread-1  12

示例:在單執行緒環境中使用 sleep 用於執行緒

以下示例演示了 Java Thread sleep() 方法的使用。在此程式中,我們建立了一個類 ThreadDemo。在 main 方法中,使用 currentThread() 方法檢索當前執行緒,並使用 sleep(),我們引入了給定時間的延遲並列印了執行緒。

package com.tutorialspoint;

public class ThreadDemo {

   public static void main(String[] args) {

      Thread t = Thread.currentThread();
      t.setName("Admin Thread");

      // set thread priority to 1
      t.setPriority(1);
     

      try {
         // thread to sleep for 1000 milliseconds plus 500 nanoseconds
         Thread.sleep(1000, 500);
      } catch (Exception e) {
         System.out.println(e);
      }
	 
      // prints the current thread
      System.out.println("Thread = " + t);     
   }
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Thread = Thread[Admin Thread,1,main]
java_lang_thread.htm
廣告