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é)果。
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é)果。
更多建議: