Java 線程休眠

2018-02-28 14:52 更新

Java線程教程 - Java線程休眠


Thread類包含一個靜態(tài)sleep()方法,它使線程在指定的持續(xù)時間內(nèi)休眠。

Thread.sleep()方法接受超時作為參數(shù)。

我們可以指定超時的毫秒數(shù),或毫秒和納秒。執(zhí)行此方法的線程將休眠指定的時間。

操作系統(tǒng)調(diào)度程序不調(diào)度睡眠線程以接收CPU時間。

如果線程在進入休眠之前擁有鎖的所有權(quán),則它在休眠期間繼續(xù)保持這些鎖。

sleep()方法拋出java.lang.InterruptedException,你的代碼必須處理它。

例子

下面的代碼演示了使用Thread.sleep()方法。

public class Main {
  public static void main(String[] args) {
    try {
      System.out.println("sleep for 5  seconds.");
      Thread.sleep(5000);
      // The "main" thread will sleep
      System.out.println("woke up.");
    } catch (InterruptedException e) {
      System.out.println("interrupted.");
    }
    System.out.println("done.");
  }
}

上面的代碼生成以下結(jié)果。


例2

java.util.concurrent包中的TimeUnit枚舉表示各種單位(如毫秒,秒,分鐘,小時,天等)的時間測量值。

它有sleep()方法,其工作方式與Thread.sleep()相同。

我們可以使用TimeUnit的sleep()方法來避免持續(xù)時間轉(zhuǎn)換:

TimeUnit.SECONDS.sleep(5); // Same as  Thread.sleep(5000);

完整的源代碼

import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String[] args) {
    try {
      System.out.println("sleep for 5  seconds.");
      TimeUnit.SECONDS.sleep(5); // Same as  Thread.sleep(5000);
      // The "main" thread will sleep
      System.out.println("woke up.");
    } catch (InterruptedException e) {
      System.out.println("interrupted.");
    }
    System.out.println("done.");
  }
}

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號