Foundation 1.1.2

java.lang
クラス Thread

java.lang.Object
  上位を拡張 java.lang.Thread
すべての実装されたインタフェース:
Runnable

public class Thread
extends Object
implements Runnable

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

各スレッドには優先順位が付けられています。優先順位の高いスレッドは、優先順位の低いスレッドよりも優先して実行されます。さらに、各スレッドがデーモンとしてマークされている場合もあれば、されていない場合もあります。あるスレッドで実行中のコードが新しい Thread オブジェクトを作成すると、この新しいスレッドには、その時点では、作成側のスレッドの優先順位に等しい優先順位が設定され、作成側スレッドがデーモンである場合にだけ、デーモンスレッドになます。  

通常、Java 仮想マシンが起動する (一般的にはある指定されたクラスの main という名前が付けられたメソッドを呼び出す) と、デーモンスレッドではないスレッドが 1 つ存在します。Java 仮想マシンは、次のどれかの条件が発生するまでスレッドを実行し続けます。

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


     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 オブジェクトを割り当てます。
Thread(Runnable target, String name)
          新しい Thread オブジェクトを割り当てます。
Thread(String name)
          新しい Thread オブジェクトを割り当てます。
Thread(ThreadGroup group, Runnable target)
          新しい Thread オブジェクトを割り当てます。
Thread(ThreadGroup group, Runnable target, String name)
          その実行オブジェクトとして target 、名前として指定された name を持つ、group によって参照されるスレッドグループに属するような、新しい Thread オブジェクトを割り当てます。
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
          新しい Thread オブジェクトを割り当て、実行オブジェクトとして target を保持し、指定された name を名前として保持するようにします。
Thread(ThreadGroup group, String name)
          新しい Thread オブジェクトを割り当てます。
 
メソッドの概要
static int activeCount()
          現行スレッドのスレッドグループ内のアクティブなスレッド数を返します。
 void checkAccess()
          現在実行中のスレッドが、このスレッドを変更するためのアクセス権を持っているかどうかを判定します。
static Thread currentThread()
          現在実行中のスレッドオブジェクトの参照を返します。
 void destroy()
          クリーンアップを行わないでこのスレッドを破棄します。
static void dumpStack()
          現在のスレッドのスタックトレースを出力します。
static int enumerate(Thread[] tarray)
          現行スレッドのスレッドグループおよびその下位グループ内のすべてのアクティブなスレッドを、指定された配列にコピーします。
 ClassLoader getContextClassLoader()
          この Thread のコンテキスト ClassLoader を返します。
 String getName()
          このスレッドの名前を返します。
 int getPriority()
          このスレッドの優先順位を返します。
 ThreadGroup getThreadGroup()
          このスレッドが所属するスレッドグループを返します。
static boolean holdsLock(Object obj)
          現行スレッドが指定されたオブジェクトに対するモニターロックを保持する場合にのみ、true を返します。
 void interrupt()
          このスレッドに割り込みます。
static boolean interrupted()
          現在のスレッドが割り込まれているかどうかを調べします。
 boolean isAlive()
          このスレッドが生存しているかどうかを判定します。
 boolean isDaemon()
          このスレッドがデーモンスレッドであるかどうかを判定します。
 boolean isInterrupted()
          このスレッドが割り込まれているどうかを調べます。
 void join()
          このスレッドが終了するのを待機します。
 void join(long millis)
          このスレッドが終了するのを、最高で millis ミリ秒待機します。
 void join(long millis, int nanos)
          最高で millis ミリ秒に nanos ナノ秒を加算した間、このスレッドが終了するのを待機します。
 void run()
          このスレッドが別個の Runnable 実行オブジェクトを使用して作成された場合、その Runnable オブジェクトの run メソッドが呼び出されます。
 void setContextClassLoader(ClassLoader cl)
          この Thread のコンテキスト ClassLoader を設定します。
 void setDaemon(boolean on)
          このスレッドを、デーモンスレッドまたはユーザースレッドとしてマークします。
 void setName(String name)
          このスレッドの名前を引数 name に等しくなるように変更します。
 void setPriority(int newPriority)
          このスレッドの優先順位を変更します。
static void sleep(long millis)
          現在実行中のスレッドを、指定されたミリ秒数の間、スリープ (一時的に実行を停止) させます。
static void sleep(long millis, int nanos)
          現在実行中のスレッドを、指定されたミリ秒数に指定されたナノ秒数を加算した間、スリープ (実行を停止) させます。
 void start()
          このスレッドの実行を開始します。
 String toString()
          スレッドの名前、優先順位、スレッドグループを含むこのスレッドの文字列表現を返します。
static void yield()
          現在実行中のスレッドオブジェクトを一時的に休止させ、ほかのスレッドが実行できるようにします。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, 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 の形式を取ります。

関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

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

パラメータ:
target - その run メソッドが呼び出されるオブジェクト
関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

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

パラメータ:
group - スレッドグループ
target - その run メソッドが呼び出されるオブジェクト
例外:
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合
関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

public Thread(String name)
新しい Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, null, name) と同じ効果を持ちます。

パラメータ:
name - 新しいスレッドの名前
関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

public Thread(ThreadGroup group,
              String name)
新しい Thread オブジェクトを割り当てます。このコンストラクタは、Thread(group, null, name) と同じ効果を持ちます。

パラメータ:
group - スレッドグループ
name - 新しいスレッドの名前
例外:
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合
関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

public Thread(Runnable target,
              String name)
新しい Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, target, name) と同じ効果を持ちます。

パラメータ:
target - その run メソッドが呼び出されるオブジェクト
name - 新しいスレッドの名前
関連項目:
java.lang.Thread#Thread(java.lang.ThreadGroup,

Thread

public Thread(ThreadGroup group,
              Runnable target,
              String name)
その実行オブジェクトとして target 、名前として指定された name を持つ、group によって参照されるスレッドグループに属するような、新しい Thread オブジェクトを割り当てます。  

groupnull で、セキュリティーマネージャーが存在する場合、グループはセキュリティーマネージャーの getThreadGroup メソッドにより決まります。groupnull でセキュリティーマネージャーが存在しない場合、またはセキュリティーマネージャーの getThreadGroup メソッドが null を返す場合、グループは新規スレッドを作成中のスレッドと同じ ThreadGroup に設定されます。

セキュリティーマネージャーが存在する場合は、ThreadGroup を引数として渡して checkAccess メソッドを呼び出します。その結果、SecurityException が発生することがあります。  

target 引数が null ではない場合、このスレッドが起動されると targetrun メソッドが呼び出されます。target 引数が null である場合は、このスレッドが起動されるときにこのスレッドの run メソッドが呼び出されます。  

新しく作成されたスレッドの優先順位は、そのスレッドを作成したスレッド、つまり現在実行中のスレッドの優先順位と同じに設定されます。この優先順位を新しい値に変更する場合は、setPriority メソッドを使用できます。  

新しく作成されたスレッドは、それを作成するスレッドがデーモンスレッドとマークされている場合にだけ、デーモンスレッドとマークされます。スレッドがデーモンであるかどうかを変更する場合は、setDaemon メソッドを使用できます。

パラメータ:
group - スレッドグループ
target - その run メソッドが呼び出されるオブジェクト
name - 新しいスレッドの名前
例外:
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合
関連項目:
Runnable.run(), run(), setDaemon(boolean), setPriority(int), ThreadGroup.checkAccess(), SecurityManager.checkAccess(java.lang.Thread)

Thread

public Thread(ThreadGroup group,
              Runnable target,
              String name,
              long stackSize)
新しい Thread オブジェクトを割り当て、実行オブジェクトとして target を保持し、指定された name を名前として保持するようにします。また、group によって参照されるスレッドグループに所属し、指定された「スタックサイズ」を保持します。

このコンストラクタは、スレッドのスタックサイズ指定が可能である点を除き、Thread(ThreadGroup,Runnable,String) と同じです。スタックサイズは、仮想マシンをこのスレッドのスタックに割り当てるアドレス空間のおよそのバイト数になります。stackSize パラメータが存在する場合、その効果はプラットフォームによって大きく異なります。

いくつかのプラットフォームでは、stackSize パラメータにより大きな値を指定することで、スレッドが StackOverflowError をスローする前により大きな回帰深度を達成することが可能になります。同様に、より小さな値を指定することで、より多くのスレッドが OutOfMemoryError (またはほかの内部エラー) をスローせずに、並行して存在することが可能になります。stackSize パラメータの値と、最大回帰深度や並行レベルとの関係はプラットフォームによって異なります。プラットフォームによっては、stackSize パラメータの値がなんら影響を与えない場合があります。

仮想マシンは、stackSize パラメータを自由に扱い、指示することができます。プラットフォームでは指定された値が小さすぎる場合、仮想マシンは代わりにプラットフォーム固有の最小値を使用できます。指定された値が大きすぎる場合には、仮想マシンは代わりにプラットフォーム固有の最大値を使用できます。同様に、仮想マシンは、適切な場合には指定された値の切り上げまたは切り下げを自由に実行 (または完全に無視) できます。

stackSize パラメータに値ゼロを指定すると、このコンストラクタは Thread(ThreadGroup, Runnable, String) コンストラクタと正確に同じ動作を実行します。

このコンストラクタの動作はプラットフォームによって異なるために、慎重に使用する必要があります。指定された計算の実行に必要なスレッドスタックサイズは、JRE 実装によって異なる可能性があります。このため、スタックサイズパラメータを注意深くチューニングしたり、アプリケーションを実行する JRE 実装ごとにチューニングを繰り返したりすることが必要な場合があります。

実装上の注意:Java プラットフォーム実装者は、stackSize parameter を基準にして実装の動作をドキュメント化しておくことをお勧めします。

パラメータ:
group - スレッドグループ
target - その run メソッドが呼び出されるオブジェクト
name - 新しいスレッドの名前
stackSize - 新規スレッドのスタックサイズまたはゼロ (このパラメータを無視することを示す)
例外:
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合
メソッドの詳細

currentThread

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

戻り値:
現在実行中のスレッド

yield

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


sleep

public static void sleep(long millis)
                  throws InterruptedException
現在実行中のスレッドを、指定されたミリ秒数の間、スリープ (一時的に実行を停止) させます。スレッドはモニターの所有権を失いません。

パラメータ:
millis - ミリ秒単位のスリープ時間の長さ
例外:
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの「割り込みステータス」はクリアされる
関連項目:
Object.notify()

sleep

public static void sleep(long millis,
                         int nanos)
                  throws InterruptedException
現在実行中のスレッドを、指定されたミリ秒数に指定されたナノ秒数を加算した間、スリープ (実行を停止) させます。スレッドはモニターの所有権を失いません。

パラメータ:
millis - ミリ秒単位のスリープ時間の長さ
nanos - スリープするための 0 〜 999999 の追加ナノ秒
例外:
IllegalArgumentException - millis の値が負数の場合、または nanos の値が 0 〜 999999 の範囲外の場合
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの「割り込みステータス」はクリアされる
関連項目:
Object.notify()

start

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

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

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

run

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

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

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

interrupt

public void interrupt()
このスレッドに割り込みます。

最初に、このスレッドの checkAccess メソッドが呼び出されます。このメソッドにより、SecurityException がスローされる場合があります。

このメソッドにより、SecurityException がスローされる場合があります。 Object クラスの wait()wait(long)、または wait(long, int) メソッドの呼び出し、またはこのクラスの join()join(long)join(long, int)sleep(long)、または sleep(long, int) メソッドの呼び出しでこのスレッドがブロックされる場合、割り込みステータスはクリアされ、InterruptedException を受け取ります。

前述の条件のどれにも当てはまらない場合、このスレッドの割り込みステータスが設定されます。

例外:
SecurityException - 現在のスレッドがこのスレッドを変更できない場合

interrupted

public static boolean interrupted()
現在のスレッドが割り込まれているかどうかを調べします。このメソッドによりスレッドの「割り込みステータス」がクリアされます。つまり、このメソッドが続けて 2 回呼び出された場合、2 回目の呼び出しは false を返します (最初の呼び出しが割り込みステータスをクリアしたあとで、2 番目の呼び出しがそれを確認する前に現在のスレッドがもう一度割り込まれた場合を除く)。

戻り値:
現在のスレッドが割り込まれている場合は true、そうでない場合は false
関連項目:
isInterrupted()

isInterrupted

public boolean isInterrupted()
このスレッドが割り込まれているどうかを調べます。このメソッドによってスレッドの「割り込みステータス」が影響を受けることはありません。

戻り値:
このスレッドが割り込まれている場合は true、そうでない場合は false
関連項目:
interrupted()

destroy

public void destroy()
クリーンアップを行わないでこのスレッドを破棄します。ロックしたあらゆるモニターがロックされたままになります。(このメソッドは、実装されていません。)


isAlive

public final boolean isAlive()
このスレッドが生存しているかどうかを判定します。指定された ID のスレッドが起動され、生存している場合、スレッドは生存しています。

戻り値:
このスレッドが生存している場合は true、そうでない場合は false

setPriority

public final void setPriority(int newPriority)
このスレッドの優先順位を変更します。  

まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。その結果、SecurityException がスローされることがあります。  

そうでない場合、このスレッドの優先順位は、指定された newPriority とスレッドのスレッドグループの最高許容優先順位の内のどちらか小さい方に設定されます。

パラメータ:
newPriority - このスレッドを設定する優先順位
例外:
IllegalArgumentException - 優先順位が MIN_PRIORITYMAX_PRIORITY の範囲外である場合
SecurityException - 現在のスレッドがこのスレッドを変更できない場合
関連項目:
getPriority(), checkAccess(), getPriority(), getThreadGroup(), MAX_PRIORITY, MIN_PRIORITY, ThreadGroup.getMaxPriority()

getPriority

public final int getPriority()
このスレッドの優先順位を返します。

戻り値:
このスレッドの優先順位
関連項目:
setPriority(int), setPriority(int)

setName

public final void setName(String name)
このスレッドの名前を引数 name に等しくなるように変更します。  

まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。その結果、SecurityException がスローされることがあります。

パラメータ:
name - このスレッドの新しい名前
例外:
SecurityException - 現在のスレッドがこのスレッドを変更できない場合
関連項目:
getName(), checkAccess(), getName()

getName

public final String getName()
このスレッドの名前を返します。

戻り値:
このスレッドの名前
関連項目:
setName(java.lang.String), setName(java.lang.String)

getThreadGroup

public final ThreadGroup getThreadGroup()
このスレッドが所属するスレッドグループを返します。このスレッドが終了されている (停止されている) 場合、このメソッドは null を返します。

戻り値:
このスレッドのスレッドグループ

activeCount

public static int activeCount()
現行スレッドのスレッドグループ内のアクティブなスレッド数を返します。

戻り値:
現行スレッドのスレッドグループ内のアクティブなスレッド数

enumerate

public static int enumerate(Thread[] tarray)
現行スレッドのスレッドグループおよびその下位グループ内のすべてのアクティブなスレッドを、指定された配列にコピーします。このメソッドは、現行スレッドのスレッドグループの enumerate メソッドを、配列引数を指定して呼び出すだけです。  

セキュリティーマネージャーが存在する場合、enumerate メソッドは、スレッドグループを引数としてセキュリティーマネージャーの checkAccess メソッドを呼び出します。その結果、SecurityException がスローされることがあります。

パラメータ:
tarray - Thread オブジェクトのコピー先配列
戻り値:
配列に格納されるスレッド数
例外:
SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkAccess メソッドがこの操作を許可しない場合
関連項目:
ThreadGroup.enumerate(java.lang.Thread[]), SecurityManager.checkAccess(java.lang.ThreadGroup)

join

public final void join(long millis)
                throws InterruptedException
このスレッドが終了するのを、最高で millis ミリ秒待機します。 のタイムアウトは永遠に待機することを意味します。

パラメータ:
millis - ミリ秒単位の待機時間
例外:
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの「割り込みステータス」はクリアされる

join

public final void join(long millis,
                       int nanos)
                throws InterruptedException
最高で millis ミリ秒に nanos ナノ秒を加算した間、このスレッドが終了するのを待機します。

パラメータ:
millis - ミリ秒単位の待機時間
nanos - 待機するための 0 〜 999999 の追加ナノ秒
例外:
IllegalArgumentException - millis の値が負数の場合、または nanos の値が 0 〜 999999 の範囲外の場合
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの「割り込みステータス」はクリアされる

join

public final void join()
                throws InterruptedException
このスレッドが終了するのを待機します。

例外:
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの「割り込みステータス」はクリアされる

dumpStack

public static void dumpStack()
現在のスレッドのスタックトレースを出力します。このメソッドはデバッグの場合にだけ使用します。

関連項目:
Throwable.printStackTrace()

setDaemon

public final void setDaemon(boolean on)
このスレッドを、デーモンスレッドまたはユーザースレッドとしてマークします。Java 仮想マシンは、実行中のスレッドがデーモンスレッドだけになると終了します。  

このメソッドは、スレッド起動前に呼び出す必要があります。  

このメソッドは、引数なしでこのスレッドの checkAccess メソッドを呼び出します。この結果、現在のスレッドで SecurityException がスローされることがあります。  

プロセスモデルが存在する場合は、Thread.setDaemon() を J2SE 仕様の定義に従って使用してください。  

プロセスモデルが存在しない場合、プログラマが優れたコーディング技術を使って a) System.exit() の呼び出し、またはすべてのユーザースレッドの終了、あるいはその両方が実行される前に、デーモンスレッドが存在してリソースをクリーンアップすることを保証する、および b) セキュリティーマネージャーのデフォルト動作を上書きして、System.exit() の呼び出し時に SecurityException をスローすることができるなら、Thread.setDaemon() を使用してスレッドをデーモンスレッドとして設定してください。  

パラメータ:
on - true の場合、このスレッドをデーモンスレッドとしてマークする
例外:
IllegalThreadStateException - このスレッドがアクティブな場合
SecurityException - 現在のスレッドがこのスレッドを変更できない場合
関連項目:
isDaemon(), checkAccess()

isDaemon

public final boolean isDaemon()
このスレッドがデーモンスレッドであるかどうかを判定します。

戻り値:
このスレッドがデーモンスレッドである場合は true、そうでない場合は false
関連項目:
setDaemon(boolean)

checkAccess

public final void checkAccess()
現在実行中のスレッドが、このスレッドを変更するためのアクセス権を持っているかどうかを判定します。  

セキュリティーマネージャーが存在する場合、このスレッドがその引数に指定されて checkAccess メソッドが呼び出されます。その結果、SecurityException がスローされることがあります。  

注:このメソッドが JDK 1.1 では final でなかったのは誤りです。Java 2 プラットフォームでは final になっています。

例外:
SecurityException - 現在のスレッドがこのスレッドへのアクセスを許されていない場合
関連項目:
SecurityManager.checkAccess(java.lang.Thread)

toString

public String toString()
スレッドの名前、優先順位、スレッドグループを含むこのスレッドの文字列表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
このスレッドの文字列表現

getContextClassLoader

public ClassLoader getContextClassLoader()
この Thread のコンテキスト ClassLoader を返します。コンテキスト ClassLoader は、クラスおよびリソースをロードするときに、このスレッドで実行中のコードが使用するためにスレッドの作成側によって提供されます。コンテキスト ClassLoader が設定されていない場合、デフォルトでは親 Thread の ClassLoader コンテキストになります。通常、親スレッドのコンテキスト ClassLoader は、アプリケーションのロードに使用されるクラスローダーに設定されます。

セキュリティーマネージャーが存在する場合、呼び出し側のクラスローダーが null ではなく、コンテキストクラスローダーを要求されているスレッドのコンテキストクラスローダーと同じでなく、そのコンテキストクラスローダーの祖先でもないときは、コンテキスト ClassLoader を取得してもよいかどうかを確認するために、RuntimePermission("getClassLoader") アクセス権を使って、セキュリティーマネージャーの checkPermission メソッドが呼び出されます。

戻り値:
この Thread のコンテキスト ClassLoader
例外:
SecurityException - セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPermission メソッドがコンテキスト ClassLoader の取得を許可しない場合
導入されたバージョン:
1.2
関連項目:
setContextClassLoader(java.lang.ClassLoader), SecurityManager.checkPermission(java.security.Permission), RuntimePermission

setContextClassLoader

public void setContextClassLoader(ClassLoader cl)
この Thread のコンテキスト ClassLoader を設定します。コンテキスト ClassLoader はスレッドの作成時に設定され、これによりスレッドの作成側は、クラスおよびリソースのロード時にスレッドで実行中のコードに適切なクラスローダーを提供できるようになります。

セキュリティーマネージャーが存在する場合、最初に、コンテキスト ClassLoader を設定してよいかどうかを調べるために RuntimePermission("setContextClassLoader") アクセス権を使って checkPermission メソッドが呼び出されます。

パラメータ:
cl - この Thread のコンテキスト ClassLoader
例外:
SecurityException - 現在のスレッドがコンテキスト ClassLoader を設定できない場合
導入されたバージョン:
1.2
関連項目:
getContextClassLoader(), SecurityManager.checkPermission(java.security.Permission), RuntimePermission

holdsLock

public static boolean holdsLock(Object obj)
現行スレッドが指定されたオブジェクトに対するモニターロックを保持する場合にのみ、true を返します。

このメソッドは、次のように、プログラムが、現行スレッドが指定されたロックをすでに保持していることを示す際に使用されます。

     assert Thread.holdsLock(obj);
 

パラメータ:
obj - 所有権のロックをテストするオブジェクト
戻り値:
現行スレッドが指定されたオブジェクトに対するモニターロックを保持する場合、true が返される
例外:
NullPointerException - obj が null の場合
導入されたバージョン:
1.4

Foundation 1.1.2

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。