歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java線程休眠(sleep)示例

Java線程休眠(sleep)示例

日期:2017/3/1 9:43:37   编辑:Linux編程

java.lang.Thread的sleep()方法能使當前線程暫停運行一段時間(單位毫秒)。需要注意的是,sleep()方法的參數不能為負,否則會拋出IllegalArgumentException異常。

除此之外,還有另一個方法sleep(long millis, int nanos),該方法可用於使當前線程暫停millis毫秒nanos納秒。需要注意的是,參數nanos的取值范圍為[0, 999999]。

Java 8 中 HashMap 的性能提升 http://www.linuxidc.com/Linux/2014-04/100868.htm

Java 8 的 Nashorn 引擎 http://www.linuxidc.com/Linux/2014-03/98880.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

下面的代碼演示如何用Thread.sleep()方法令主線程暫停執行2秒。

ThreadSleep.java

package com.journaldev.threads;

public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = " + (System.currentTimeMillis()-start));
}
}

如果你運行上述程序,你會發現最後打印出來的結果會比2000略多一些,這取決於線程休眠是如何實現的,以及操作系統定義的線程調度機制。

線程休眠要點

1. 線程休眠總是暫停當前線程

2. 在被喚醒並開始執行前,線程休眠的實際時間取決於系統計時器和調度器。對比較清閒的系統來說,實際休眠的時間十分接近於指定的休眠時間,但對於繁忙的系統,兩者之間的差距就較大。

3. 線程休眠並不會丟失當前線程已獲取的任何監視器和鎖。

4. 其他線程可以中斷當前進程的休眠,但會拋出InterruptedException異常。

線程休眠的工作原理

Thread.sleep()與線程調度器交互,它將當前線程設置為等待一段時間的狀態。一旦等待時間結束,線程狀態就會被改為可運行(runnable),並開始等待CPU來執行後續的任務。因此,當前線程的實際休眠時間取決於線程調度器,而線程調度器則是由操作系統來進行管理的。

Copyright © Linux教程網 All Rights Reserved