您好,登錄后才能下訂單哦!
這篇文章主要介紹了 java中的Thread.sleep()如何使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 java中的Thread.sleep()如何使用文章都會有所收獲,下面我們一起來看看吧。
Thread.sleep()被用來暫停當前線程的執行,會通知線程調度器把當前線程在指定的時間周期內置為wait狀態。當wait時間結束,線程狀態重新變為Runnable并等待CPU的再次調度執行。所以線程sleep的實際時間取決于線程調度器,而這是由操作系統來完成的。
一個進程在運行態時調用sleep(),進入等待態,睡眠結束以后,并不是直接回到運行態,而是進入就緒隊列,要等到其他進程放棄時間片后才能重新進入運行態。所以sleep(1000),在1000ms以后,線程不一定會被喚醒。sleep(0)可以看成一個運行態的進程產生一個中斷,由運行態直接轉入就緒態。這樣做是給其他就緒態進程使用時間片的機會。總之,還是操作系統中運行態、就緒態和等待態相互轉化的問題。
讓當前線程由運行狀態進入到阻塞狀態,進而使其他線程有機會繼續執行任務。雖然使線程休眠,但是并不釋放對象鎖,所以說如果在同步塊中使用sleep(),其他線程仍然無法獲得執行權限。
注意:sleep()方法定義在Thread類中,會調用sleep(millis)這個本地方法,拋出InterruptedException異常,因此需要捕獲該異常
Thread sleep(long millis)
暫停當前線程的執行,暫停時間由方法參數指定,單位為毫秒。
注意參數不能為負數,否則程序將會拋出IllegalArgumentException。
Thread sleep(long millis, int nanos)
暫停當前線程的執行,暫停時間為millis毫秒數加上nanos納秒數。
納秒允許的取值范圍為0~999999.
例:
public class Dome { public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i++) { System.out.println(i); //每隔一秒鐘進行一次循環輸出 Thread.sleep(1000);//單位:毫秒 } } }
運行結果:
0
1
2
3
4
關于“ java中的Thread.sleep()如何使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“ java中的Thread.sleep()如何使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。