国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Java中Thread之Sleep()的示例分析

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“Java中Thread之Sleep()的示例分析”,內容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習一下“Java中Thread之Sleep()的示例分析”這篇文章吧。

一、API簡(jiǎn)介

Thread.sleep()是Thread類(lèi)的一個(gè)靜態(tài)方法,使當前線(xiàn)程休眠,進(jìn)入阻塞狀態(tài)(暫停執行),如果線(xiàn)程在睡眠狀態(tài)被中斷,將會(huì )拋出IterruptedException中斷異常。。主要方法如下:

【a】sleep(long millis)  線(xiàn)程睡眠 millis 毫秒

【b】sleep(long millis, int nanos)  線(xiàn)程睡眠 millis 毫秒 + nanos 納秒

Api文檔:

二、使用方法

注意:在哪個(gè)線(xiàn)程里面調用sleep()方法就阻塞哪個(gè)線(xiàn)程。

public class SleepDemo {
    public static void main(String[] args) throws InterruptedException {
        Process process = new Process();
        Thread thread = new Thread(process);
        thread.setName("線(xiàn)程Process");
        thread.start();
 
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "-->" + i);
            //阻塞main線(xiàn)程,休眠一秒鐘
            Thread.sleep(1000);
        }
    }
}
 
/**
 * 線(xiàn)程類(lèi)
 */
class Process implements Runnable {
 
    @Override
    public void run() {
 
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "-->" + i);
 
            //休眠一秒鐘
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
 
    }
}

執行結果:main線(xiàn)程執行一次之后休眠一秒鐘,讓出cpu,此時(shí)Process線(xiàn)程執行一次然后又休眠一秒,依次執行。

三、示例

下面以一個(gè)倒計時(shí)的功能來(lái)進(jìn)一步說(shuō)明sleep()方法的使用:

/**
 * @Description: 線(xiàn)程休眠Sleep()方法
 * @Author: weishihuai
 * @Date: 2018/11/11 21:31
 * <p>
 * 1. 注意:sleep()方法使用的位置,如果使用在main線(xiàn)程執行代碼中,則阻塞的是main線(xiàn)程。如果在其他線(xiàn)程執行的代碼中,則阻塞的是執行這些代碼的線(xiàn)程
 * 2. 案例: 倒計時(shí)功能
 */
public class TestSleepThread {
    public static void main(String[] args) throws InterruptedException {
        countDown(10000);
    }
 
    /**
     * 倒計時(shí)方法
     *
     * @param mills 倒計時(shí)開(kāi)始的時(shí)間距離當前時(shí)間多少毫秒
     */
    public static void countDown(long mills) {
        Date endDate = new Date(System.currentTimeMillis() + mills);
        long endTime = endDate.getTime();
 
        while (true) {
            System.out.println(new SimpleDateFormat("hh:mm:ss").format(endDate));
            //下一秒時(shí)間
            endDate = new Date(endDate.getTime() - 1000);
            //休眠一秒鐘
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (endTime - endDate.getTime() > mills) {
                break;
            }
        }
    }
 
}

執行結果:

四、注意問(wèn)題

【a】sleep()方法是Thread類(lèi)的靜態(tài)方法,如果調用線(xiàn)程對象.sleep()方法并不是該線(xiàn)程就休眠,反正在哪一個(gè)線(xiàn)程里面執行了sleep()方法哪一個(gè)線(xiàn)程就休眠。

【b】線(xiàn)程睡眠到期自動(dòng)蘇醒,并返回到可運行狀態(tài)(就緒),不是運行狀態(tài)。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

精品国产制服丝袜高跟| 成免费CRM每天都不重样| 亚洲精品无码久久久久YW| AV无码人妻中文字幕| 最近中文字幕视频完整版在线看| 成在人线AV无码免费动态图|