java.lang
クラス Thread

java.lang.Object
  |
  +--java.lang.Thread
すべての実装インタフェース:
Runnable

public class Thread
extends Object
implements Runnable

スレッドとは、プログラム内での実行のスレッドのことです。Java Virtual Machine では、アプリケーションは並列に実行される複数のスレッドを使用することができます。

各スレッドには優先順位が付けられています。優先順位の高いスレッドは、優先順位の低いスレッドよりも優先して実行されます。

新しい実行のスレッドを作成するには 2 通りの方法があります。1 つの方法は、クラスを Thread のサブクラスであると宣言することです。このサブクラスは、クラス Threadrun メソッドをオーバーライドしなければなりません。そうすればサブクラスのインスタンスは割り当てられ、起動されることができます。たとえば、初期値より大きい素数を計算するスレッドは、次に示すようにして作成できます。


     class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

次に、以下に示すコードでスレッドを作成し、スレッドの実行を開始します。

     PrimeThread p = new PrimeThread(143);
     p.start();

スレッドを作成するもう 1 つの方法は、Runnable インタフェースを実装するクラスを宣言することです。そうすると、そのクラスは、run メソッドを実装します。クラスのインスタンスが割り当てられ、Thread の作成時に引数として渡され、開始されます。この方法での同じ例は、以下に示すようになります。


     class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

次に、以下に示すコードでスレッドを作成し、スレッドの実行を開始します。

     PrimeRun p = new PrimeRun(143);
     new Thread(p).start();

導入されたバージョン:
JDK1.0
関連項目:
Runnable, Runtime.exit(int), run()

フィールドの概要
static int MAX_PRIORITY
          スレッドに設定できる最高優先順位です。
static int MIN_PRIORITY
          スレッドに設定できる最低優先順位です。
static int NORM_PRIORITY
          スレッドに割り当てられるデフォルトの優先順位です。
 
コンストラクタの概要
Thread()
          新しい Thread オブジェクトを割り当てます。
Thread(Runnable target)
          新しい Thread オブジェクトを割り当てます。
 
メソッドの概要
static int activeCount()
          VM に存在する現在アクティブなスレッドの数を返します。
static Thread currentThread()
          現在実行中のスレッドオブジェクトの参照を返します。
 int getPriority()
          このスレッドの優先順位を返します。
 boolean isAlive()
          このスレッドが生存しているかどうかを判定します。
 void join()
          このスレッドが終了するのを待機します。
 void run()
          このスレッドが別個の Runnable 実行オブジェクトを使用して作成された場合、その Runnable オブジェクトの run メソッドが呼び出されます。
 void setPriority(int newPriority)
          このスレッドの優先順位を変更します。
static void sleep(long millis)
          現在実行中のスレッドを、指定されたミリ秒数の間、スリープ (一時的に実行を停止) させます。
 void start()
          このスレッドの実行を開始します。
 String toString()
          スレッドとその優先順位を示す固有の番号を含む、このスレッドの文字列表現を返します。
static void yield()
          現在実行中のスレッドオブジェクトを一時的に休止させ、ほかのスレッドが実行できるようにします。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

MIN_PRIORITY

public static final int MIN_PRIORITY
スレッドに設定できる最低優先順位です。

NORM_PRIORITY

public static final int NORM_PRIORITY
スレッドに割り当てられるデフォルトの優先順位です。

MAX_PRIORITY

public static final int MAX_PRIORITY
スレッドに設定できる最高優先順位です。
コンストラクタの詳細

Thread

public Thread()
新しい Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, null, gname) と同じ効果を持ちます。この場合、gname は、新しく作成される名前です。自動的に作成される名前は、n を整数とすると "Thread-"+n の形式をとります。

このようにして作成されたスレッドは、何かを実際に行うためには run() メソッドをオーバーライドしていなければなりません。このメソッドを使用する例を以下に示します。

     import java.lang.*;

     class plain01 implements Runnable {
         String name;
         plain01() {
             name = null;
         }
         plain01(String s) {
             name = s;
         }
         public void run() {
             if (name == null)
                 System.out.println("A new thread created");
             else
                 System.out.println("A new thread with name " + name +
                                    " created");
         }
     }
     class threadtest01 {
         public static void main(String args[] ) {
             int failed = 0 ;

             Thread t1 = new Thread();
             if (t1 != null)
                 System.out.println("new Thread() succeed");
             else {
                 System.out.println("new Thread() failed");
                 failed++;
             }
         }
     }
関連項目:
Runnable

Thread

public Thread(Runnable target)
新しい Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, target, gname) と同じ効果を持ちます。この場合、gname は、新しく作成される名前です。自動的に作成される名前は、n を整数とすると "Thread-"+n の形式をとります。
パラメータ:
target - その run メソッドが呼び出されるオブジェクト
メソッドの詳細

currentThread

public static Thread currentThread()
現在実行中のスレッドオブジェクトの参照を返します。
戻り値:
現在実行中のスレッド

yield

public static void yield()
現在実行中のスレッドオブジェクトを一時的に休止させ、ほかのスレッドが実行できるようにします。

sleep

public static void sleep(long millis)
                  throws InterruptedException
現在実行中のスレッドを、指定されたミリ秒数の間、スリープ (一時的に実行を停止) させます。スレッドはモニターの所有権を失いません。
パラメータ:
millis - ミリ秒単位のスリープ時間の長さ
例外:
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされる
関連項目:
Object.notify()

start

public void start()
このスレッドの実行を開始します。Java Virtual Machine は、このスレッドの run メソッドを呼び出します。

その結果、(start メソッドへの呼び出しから復帰する) 現在のスレッドと (その run メソッドを実行する) 別のスレッドという 2 つのスレッドが並列に実行されます。

例外:
IllegalThreadStateException - スレッドがすでに起動していた場合
関連項目:
run()

run

public void run()
このスレッドが別個の Runnable 実行オブジェクトを使用して作成された場合、その Runnable オブジェクトの run メソッドが呼び出されます。そうでない場合、このメソッドは何も行わずに復帰します。

Thread のサブクラスは、このメソッドをオーバーライドしなければなりません。

定義:
インタフェース Runnable 内の run
関連項目:
start(), Runnable.run()

isAlive

public final boolean isAlive()
このスレッドが生存しているかどうかを判定します。スレッドが起動されていて、まだ終了されていない場合、スレッドは生存しています。
戻り値:
このスレッドが生存している場合は true、そうでない場合は false

setPriority

public final void setPriority(int newPriority)
このスレッドの優先順位を変更します。
パラメータ:
newPriority - このスレッドを設定する優先順位
例外:
IllegalArgumentException - 優先順位が MIN_PRIORITYMAX_PRIORITY の範囲外である場合
関連項目:
getPriority(), getPriority(), MAX_PRIORITY, MIN_PRIORITY

getPriority

public final int getPriority()
このスレッドの優先順位を返します。
戻り値:
このスレッドの名前
関連項目:
setPriority(int), setPriority(int)

activeCount

public static int activeCount()
VM に存在する現在アクティブなスレッドの数を返します。
戻り値:
このスレッドのスレッドグループの現在のスレッドの数

join

public final void join()
                throws InterruptedException
このスレッドが終了するのを待機します。
例外:
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされる

toString

public String toString()
スレッドとその優先順位を示す固有の番号を含む、このスレッドの文字列表現を返します。
オーバーライド:
クラス Object 内の toString
戻り値:
このスレッドの文字列表現