C語言中文網 目錄

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

由于 main 線程與 MyThread11 線程是異步執行的,所以首先輸出主線程的信息。而 MyThread11 線程是隨后運行的,在最后兩行輸出它的運行時間信息。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo