首頁(yè)技術(shù)文章正文

java線程休眠的sleep方法詳細(xì)介紹

更新時(shí)間:2021-11-10 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

線程的優(yōu)先級(jí)是優(yōu)先級(jí)高的程序會(huì)先執(zhí)行,而優(yōu)先級(jí)低的程序會(huì)后執(zhí)行。如果希望人為地控制線程,使正在執(zhí)行的線程暫停,將CPU讓給別的線程,這時(shí)可以使用靜態(tài)方法sleep(long millis),該方法可以讓當(dāng)前正在執(zhí)行的線程暫停一段時(shí)間,進(jìn)入休眠等待狀態(tài)。當(dāng)前線程調(diào)用sleep(long millis)方法后,在指定時(shí)間(單位毫秒)內(nèi)該線程是不會(huì)執(zhí)行的,這樣其他的線程就可以得以執(zhí)行了。

sleep(long millis)方法聲明會(huì)拋出InterrupledException異常,因此在調(diào)用該方法時(shí)應(yīng)該捕獲異常,或者聲明拋出該異常。下面通過(guò)一個(gè)案例來(lái)演示sleep(long millis)方法在程序中的使用。

public class Example02{
    public static void main(String[] args)throws Exception{
        //創(chuàng)建一個(gè)線程
        new Thread(new SleepThread()).start();
        for(int i=1;i<=10;i++){
            if(i == 5){
                Thread.sleep(2000);     //當(dāng)前線程休眠2秒
            }
            System.out.println("主線程正在輸出:"+i);
            Thread.sleep (500);     //當(dāng)前線程休眠500毫秒
        }
    }
}

// 定義SleepThread類實(shí)現(xiàn)Runnable接口
class SleepThread implements Runnable{
    public void run(){
        for (int i=1;i<=10; i++){
            if(i ==3){
                try {
                    Thread.sleep(2000);//當(dāng)前線程休眠2秒
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
            System.out.println("SleepThread線程正在輸出:"+i);
            try{
                Thread.sleep(500); //當(dāng)前線程休眠500毫秒
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

上面代碼運(yùn)行結(jié)果如下圖所示。

線程休眠sleep案例

代碼中第15~31行代碼定義了一個(gè)SleepThread類并實(shí)現(xiàn)了Runnable接口。在SleepThread類中重寫了run()方法,run()方法中使用for循環(huán)打印線程輸出語(yǔ)句;第26~30行代碼使用sleep()方法設(shè)置線程休眠500毫秒;在第18~24行代碼中使用if判斷當(dāng)變量i=3時(shí),線程休眠2000毫秒;第4行中使用new關(guān)鍵詞創(chuàng)建了一個(gè)SleepThread線程并啟動(dòng);在第5~12行代碼中使用for循環(huán)打印主線程的輸出語(yǔ)句,并在第10行代碼使用sleep()方法設(shè)置線程休眠500毫秒;在第6~8行代碼中使用if判新出當(dāng)變量i=5時(shí),線程休眠2000毫秒。



猜你喜歡

線程安全單例有哪些?

如何保證多線程共享數(shù)據(jù)的安全?

Java中的4種線程池介紹

黑馬程序員Java開(kāi)發(fā)培訓(xùn)高手班課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!