溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

?java中的Thread.sleep()如何使用

發(fā)布時(shí)間:2023-04-21 16:29:16 來源:億速云 閱讀:109 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了 java中的Thread.sleep()如何使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇 java中的Thread.sleep()如何使用文章都會有所收獲,下面我們一起來看看吧。

sleep

Thread.sleep()被用來暫停當(dāng)前線程的執(zhí)行,會通知線程調(diào)度器把當(dāng)前線程在指定的時(shí)間周期內(nèi)置為wait狀態(tài)。當(dāng)wait時(shí)間結(jié)束,線程狀態(tài)重新變?yōu)镽unnable并等待CPU的再次調(diào)度執(zhí)行。所以線程sleep的實(shí)際時(shí)間取決于線程調(diào)度器,而這是由操作系統(tǒng)來完成的。

一個(gè)進(jìn)程在運(yùn)行態(tài)時(shí)調(diào)用sleep(),進(jìn)入等待態(tài),睡眠結(jié)束以后,并不是直接回到運(yùn)行態(tài),而是進(jìn)入就緒隊(duì)列,要等到其他進(jìn)程放棄時(shí)間片后才能重新進(jìn)入運(yùn)行態(tài)。所以sleep(1000),在1000ms以后,線程不一定會被喚醒。sleep(0)可以看成一個(gè)運(yùn)行態(tài)的進(jìn)程產(chǎn)生一個(gè)中斷,由運(yùn)行態(tài)直接轉(zhuǎn)入就緒態(tài)。這樣做是給其他就緒態(tài)進(jìn)程使用時(shí)間片的機(jī)會??傊?,還是操作系統(tǒng)中運(yùn)行態(tài)、就緒態(tài)和等待態(tài)相互轉(zhuǎn)化的問題。

功能介紹:

讓當(dāng)前線程由運(yùn)行狀態(tài)進(jìn)入到阻塞狀態(tài),進(jìn)而使其他線程有機(jī)會繼續(xù)執(zhí)行任務(wù)。雖然使線程休眠,但是并不釋放對象鎖,所以說如果在同步塊中使用sleep(),其他線程仍然無法獲得執(zhí)行權(quán)限。

注意:sleep()方法定義在Thread類中,會調(diào)用sleep(millis)這個(gè)本地方法,拋出InterruptedException異常,因此需要捕獲該異常

Thread sleep(long millis)  
暫停當(dāng)前線程的執(zhí)行,暫停時(shí)間由方法參數(shù)指定,單位為毫秒。
注意參數(shù)不能為負(fù)數(shù),否則程序?qū)伋鯥llegalArgumentException。

Thread sleep(long millis, int nanos)  
暫停當(dāng)前線程的執(zhí)行,暫停時(shí)間為millis毫秒數(shù)加上nanos納秒數(shù)。
納秒允許的取值范圍為0~999999.

例:

public class Dome {
    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
            //每隔一秒鐘進(jìn)行一次循環(huán)輸出
            Thread.sleep(1000);//單位:毫秒
        }
    }
}

運(yùn)行結(jié)果:

0
1
2
3
4

關(guān)于“ java中的Thread.sleep()如何使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“ java中的Thread.sleep()如何使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI