Java sleepメソッドの役割(sleep()

2886 ワード

sleep()メソッドの役割は、現在実行中のスレッドを指定したミリ秒以内に休止させることです。この「実行中スレッド」とは、this.current Thread()が返すスレッドのことです。
例1
以下では、スレッドがアクティブであるかどうかを判定するために、sleep()法を使用する基準を判例で理解する。MyThread 10スレッド類のコードは以下の通りであると仮定する。
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());
    }
}
  
上記のコードで示すように、メインスレッドはMyThread 10スレッドのインスタンスを作成した後、直接にルン()メソッド起動スレッドを起動し、プロセス全体がメインスレッドで完了します。プログラム運転後の出力結果は以下の通りです。
       =1540963362783
       =1540963362783
         :Thread-0   
         :Thread-0   
例2
上のケースの例スレッド中の遅延は、メインスレッドも遅延した。次に、sleep()メソッドアプリケーションの例を見ます。ここで使っているのはMyThread 11スレッド類です。このクラスのコードは以下の通りです。
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()を使ってMyThread 11スレッドを起動します。具体的なコードは以下の通りです。
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