Java sleep方法的作用(sleep())


sleep() 方法的作用是在指定的毫秒數內讓當前“正在執行的線程”休眠(暫停執行)。這個“正在執行的線程”是指 this.currentThread() 返回的線程。

例 1

下面通過一個案例來理解使用 sleep() 方法判斷線程是否活動的標准。假設 MyThread10 線程類的代碼如下:

package ch14;
public class MyThread10 extends Thread
{
    @Override 
    public void run()
    { 
        try
        { 
            System.out.println("正在運行的線程名稱:"+this.currentThread().getName()+" 開始"); 
            Thread.sleep(2000);    //延時2秒
            System.out.println("正在運行的線程名稱:"+this.currentThread().getName()+" 結束"); 
        }
        catch(InterruptedException e)
        { 
            e.printStackTrace(); 
        } 
    }
}
下面編寫啟動 MyThread10 線程的代碼,具體實現如下:

package ch14;
public class Test14
{
    public static void main(String[] args)
    {
        MyThread11 mythread=new MyThread11();
        System.out.println("主線程開始時間="+System.currentTimeMillis());
        mythread.start();
        System.out.println("主線程結束時間="+System.currentTimeMillis());
    }
}

  

如上述代碼所示,主線程創建一個 MyThread10 線程實例之后直接調用 run() 方法啟動線程,整個過程都在主線程中完成。程序運行后的輸出結果如下所示。

主線程開始時間=1540963362783
主線程結束時間=1540963362783
正在運行的線程名稱:Thread-0 開始
正在運行的線程名稱:Thread-0 結束

例 2

上個案例子線程中的延時導致主線程也進行了延時。下面再看一個 sleep() 方法應用的案例,這里使用的是 MyThread11 線程類,該類代碼如下:

package ch14;
public class MyThread11 extends Thread
{
    @Override
    public void run()
    {
        try
        {
            System.out.println("正在運行的線程名稱:"+this.currentThread().getName()+" 開始時間="+System.currentTimeMillis());
            Thread.sleep(2000);    //延時2秒
            System.out.println("正在運行的線程名稱:"+this.currentThread().getName()+" 結束時間="+System.currentTimeMillis());
        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    }
}

  

下面編寫主線程的代碼,在這里使用 start() 方法來啟動 MyThread11 線程。具體代碼如下:

package ch14;
public class Test14
{
    public static void main(String[] args)
    {
        MyThread11 mythread=new MyThread11();
        System.out.println("主線程開始時間="+System.currentTimeMillis());
        mythread.start();
        System.out.println("主線程結束時間="+System.currentTimeMillis());
    }
}

  

此時運行程序將看到如下所示運行效果。

主線程開始時間=1540964257366
主線程結束時間=1540964257366
正在運行的線程名稱:Thread-0 開始時間=1540964257366
正在運行的線程名稱:Thread-0 結束時間=1540964259366

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM