| 
 | JavaTM 2 Platform Std. Ed. v1.4.0 | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object | +--java.lang.Thread
スレッドとは、プログラム内での実行のスレッドのことです。Java 仮想マシンでは、アプリケーションは並列に実行される複数のスレッドを使用することができます。
各スレッドには優先順位が付けられています。優先順位の高いスレッドは、優先順位の低いスレッドよりも優先して実行されます。さらに、各スレッドがデーモンとしてマークされている場合もあれば、されていない場合もあります。あるスレッドで実行中のコードが新しい Thread オブジェクトを作成すると、この新しいスレッドには、その時点では、作成側のスレッドの優先順位に等しい優先順位が設定され、作成側スレッドがデーモンである場合にだけ、デーモンスレッドになます。
通常、Java 仮想マシンが起動すると、(一般的にはある指定されたクラスの main という名前が付けられたメソッドを呼び出す) 1 つのデーモンスレッドではないスレッドが存在します。Java 仮想マシンは、以下のどれかが発生するまでスレッドを実行し続けます。
Runtime クラスの exit メソッドが呼び出され、セキュリティマネージャが exit 動作を許可した場合
run メソッドの呼び出しから復帰することによって、または run メソッド以外から送られる例外をスローすることによって、デーモンスレッドではないすべてのスレッドが終了した場合
新しい実行のスレッドを作成するには 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();
 
各スレッドは識別のための名前を持ちます。複数のスレッドが同じ名前を持つことがあります。スレッドの作成時に名前が指定されないと、スレッドには新しい名前が生成されます。
Runnable, 
Runtime.exit(int), 
run(), 
stop()| フィールドの概要 | |
| 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()現在実行中のスレッドが、このスレッドを変更するためのアクセス権を持っているかどうかを判定します。 | 
|  int | countStackFrames()推奨されていません。 この呼び出しの定義は、推奨されない suspend()に依存します。また、この呼び出しの結果は保証されません。 | 
| 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 | resume()推奨されていません。 このメソッドはデッドロックを発生しやすいため推奨されません。 suspend()とともに使用するためだけに提供されています。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。 | 
|  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()このスレッドの実行を開始します。 | 
|  void | stop()推奨されていません。 このメソッドは本質的に安全ではありません。Thread.stop を使ってスレッドを停止すると、チェックされていない ThreadDeath例外がスタックの下から上に伝えられた結果、そのスレッドによりロックされていたモニターのロックがすべて解除されます。これらのモニターによって直前まで保護されていたオブジェクトが整合性のない状態にあった場合、壊れたオブジェクトは他のスレッドに対して可視になり、動作が保証されないことがあります。多くの場合、ターゲットスレッドの実行停止を指示するには、stopではなく、単に一部の変数を変更するコードを使用する必要があります。ターゲットスレッドはこの変数を定期的にチェックし、変数が実行停止を指示している場合は、run メソッドから適切に復帰します。条件変数などでターゲットスレッドが長い間待機している場合、待機を中断させるには、interruptメソッドを使用します。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。 | 
|  void | stop(Throwable obj)推奨されていません。 このメソッドは本質的に安全ではありません。 stop()(引数なし) を参照してください。さらに、このメソッドは、ターゲットスレッドで処理の準備ができていない例外の生成に使用されることがある点でも危険です (このメソッドがなければスレッドによりスローされることのない、チェックされた例外など)。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。 | 
|  void | suspend()推奨されていません。 このメソッドはデッドロックを発生しやすいため推奨されません。ターゲットスレッドが、重要なシステムリソースを保護しているモニターのロックを保持している状態で中断された場合、ターゲットスレッドが再開されるまで、どのスレッドもこのリソースにアクセスできません。ターゲットスレッドを再開しようとするスレッドが、 resumeを呼び出す前にこのモニターをロックしようとすると、デッドロックが発生します。通常、そのようなデッドロックは、自身を「フリーズした」プロセスとして表明します。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。 | 
|  String | toString()スレッドの名前、優先順位、スレッドグループを含むこのスレッドの文字列表現を返します。 | 
| static void | yield()現在実行中のスレッドオブジェクトを一時的に休止させ、ほかのスレッドが実行できるようにします。 | 
| クラス java.lang.Object から継承したメソッド | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| フィールドの詳細 | 
public static final int MIN_PRIORITY
public static final int NORM_PRIORITY
public static final int MAX_PRIORITY
| コンストラクタの詳細 | 
public Thread()
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, null, gname) と同じ効果を持ちます。この場合、gname は、新しく作成される名前です。自動的に作成される名前は、n を整数とすると "Thread-"+n の形式をとります。
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)public Thread(Runnable target)
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, target, gname) と同じ効果を持ちます。この場合、gname は、新しく作成される名前です。自動的に作成される名前は、n を整数とすると "Thread-"+n の形式をとります。
target - その run メソッドが呼び出されるオブジェクトThread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
public Thread(ThreadGroup group,
              Runnable target)
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(group, target, gname) と同じ効果を持ちます。この場合、gname は、新しく作成される名前です。自動的に作成される名前は、n を整数とすると "Thread-"+n の形式をとります。
group - スレッドグループtarget - その run メソッドが呼び出されるオブジェクト
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)public Thread(String name)
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, null, name) と同じ効果を持ちます。
name - 新しいスレッドの名前Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
public Thread(ThreadGroup group,
              String name)
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(group, null, name) と同じ効果を持ちます。
group - スレッドグループname - 新しいスレッドの名前
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
public Thread(Runnable target,
              String name)
Thread オブジェクトを割り当てます。このコンストラクタは、Thread(null, target, name) と同じ効果を持ちます。
target - その run メソッドが呼び出されるオブジェクトname - 新しいスレッドの名前Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String)
public Thread(ThreadGroup group,
              Runnable target,
              String name)
target 、名前として指定された name を持つ、group によって参照されるスレッドグループに属するような、新しい Thread オブジェクトを割り当てます。
group が null で、セキュリティマネージャが存在する場合、グループはセキュリティマネージャの getThreadGroup メソッドにより決まります。group が null でセキュリティマネージャが存在しない場合、またはセキュリティマネージャの getThreadGroup メソッドが null を返す場合、グループは新規スレッドを作成中のスレッドと同じ ThreadGroup に設定されます。
セキュリティマネージャが存在する場合、ThreadGroup を引数として、セキュリティマネージャの checkAccess メソッドが呼び出されます。その結果、SecurityException がスローされることがあります。
target 引数が null ではない場合、このスレッドが起動されると target の run メソッドが呼び出されます。target 引数が null である場合は、このスレッドが起動されるときにこのスレッドの run メソッドが呼び出されます。
新しく作成されたスレッドの優先順位は、そのスレッドを作成したスレッド、つまり現在実行中のスレッドの優先順位と同じに設定されます。この優先順位を新しい値に変更する場合は、メソッド setPriority を使用できます。
新しく作成されたスレッドは、それを作成するスレッドがデーモンスレッドとマークされている場合にだけ、デーモンスレッドとマークされます。スレッドがデーモンであるかどうかを変更する場合は、メソッド setDaemon を使用できます。
group - スレッドグループtarget - その run メソッドが呼び出されるオブジェクトname - 新しいスレッドの名前
SecurityException - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合Runnable.run(), 
run(), 
setDaemon(boolean), 
setPriority(int), 
ThreadGroup.checkAccess(), 
SecurityManager.checkAccess(java.lang.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 - 現在のスレッドが、指定されたスレッドグループ内のスレッドを作成できない場合| メソッドの詳細 | 
public static Thread currentThread()
public static void yield()
public static void sleep(long millis)
                  throws InterruptedException
millis - ミリ秒単位のスリープ時間の長さ
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされるObject.notify()
public static void sleep(long millis,
                         int nanos)
                  throws InterruptedException
millis - ミリ秒単位のスリープ時間の長さnanos - スリープするための 0 〜 999999 の追加ナノ秒
IllegalArgumentException - millis の値が負数の場合、または nanos の値が 0 〜 999999 の範囲外の場合
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされるObject.notify()public void start()
run メソッドを呼び出します。
その結果、(start メソッドへの呼び出しから復帰する) 現在のスレッドと (その run メソッドを実行する) 別のスレッドという 2 つのスレッドが並列に実行されます。
IllegalThreadStateException - スレッドがすでに起動していた場合run(), 
stop()public void run()
Runnable 実行オブジェクトを使用して作成された場合、その Runnable オブジェクトの run メソッドが呼び出されます。そうでない場合、このメソッドは何も行わずに復帰します。
Thread のサブクラスは、このメソッドをオーバーライドしなければなりません。
Runnable 内の runstart(), 
stop(), 
Thread(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String), 
Runnable.run()public final void stop()
ThreadDeath 例外がスタックの下から上に伝えられた結果、そのスレッドによりロックされていたモニターのロックがすべて解除されます。これらのモニターによって直前まで保護されていたオブジェクトが整合性のない状態にあった場合、壊れたオブジェクトは他のスレッドに対して可視になり、動作が保証されないことがあります。多くの場合、ターゲットスレッドの実行停止を指示するには、stop ではなく、単に一部の変数を変更するコードを使用する必要があります。ターゲットスレッドはこの変数を定期的にチェックし、変数が実行停止を指示している場合は、run メソッドから適切に復帰します。条件変数などでターゲットスレッドが長い間待機している場合、待機を中断させるには、interrupt メソッドを使用します。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。
セキュリティマネージャがインストールされている場合、this を引数として、セキュリティマネージャの checkAccess メソッドが呼び出されます。この結果、現在のスレッドで SecurityException がスローされることがあります。
また、このスレッドが現在のスレッドと異なる場合、つまり、現在のスレッドが自分以外のスレッドを停止しようとしている場合は、RuntimePermission("stopThread") を引数として、セキュリティマネージャの checkPermission メソッドも呼び出されます。この場合にも、現在のスレッドで SecurityException がスローされることがあります。
このスレッドによって表されるスレッドは、それが実行していた動作に関係なく強制的に異常停止させられ、新しく生成した ThreadDeath オブジェクトを例外としてスローします。
まだ起動されていないスレッドを停止することができます。スレッドが最終的に起動されると、すぐに終了します。
アプリケーションは、通常とは異なるクリーンアップ動作を実行しなければならない場合を除き、ThreadDeath をキャッチすべきではありません。ただし、ThreadDeath をスローすると、スレッドが正式に終了する前に try 文の finally 節が実行されることに注意してください。catch 節が ThreadDeath オブジェクトをキャッチする場合は、スレッドが実際に終了するようにオブジェクトをスローし直すことが重要です。
そうでない場合、キャッチされていない例外を扱う最高レベルのエラーハンドラは、キャッチされていない例外が ThreadDeath のインスタンスであれば、メッセージを出力したり、アプリケーションに通知したりすることはしません。
SecurityException - 現在のスレッドがこのスレッドを変更できない場合interrupt(), 
checkAccess(), 
run(), 
start(), 
ThreadDeath, 
ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable), 
SecurityManager.checkAccess(Thread), 
SecurityManager.checkPermission(java.security.Permission)public final void stop(Throwable obj)
stop() (引数なし) を参照してください。さらに、このメソッドは、ターゲットスレッドで処理の準備ができていない例外の生成に使用されることがある点でも危険です (このメソッドがなければスレッドによりスローされることのない、チェックされた例外など)。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。
セキュリティマネージャがインストールされている場合、セキュリティマネージャの checkAccess メソッドが呼び出されます。この結果、現在のスレッドで SecurityException がスローされることがあります。
また、このスレッドが現在のスレッドと異なる場合、つまり、現在のスレッドが自分以外のスレッドを停止しようとしている場合、または obj が ThreadDeath のインスタンスでない場合は、RuntimePermission("stopThread") を引数として、セキュリティマネージャの checkPermission メソッドが呼び出されます。この場合にも、現在のスレッドで SecurityException がスローされることがあります。
引数 obj が null の場合、NullPointerException が (現在のスレッド内で) スローされます。
このスレッドによって表されるスレッドは、それが実行する動作には関係なく強制的に終了され、例外として Throwable オブジェクト obj がスローされます。これは通常では行われない動作であるため、通常は引数を設定しない stop メソッドを使用してください。
まだ起動されていないスレッドを停止することができます。スレッドが最終的に起動されると、すぐに終了します。
obj - スロー対象の Throwable オブジェクト
SecurityException - 現在のスレッドがこのスレッドを変更できない場合interrupt(), 
checkAccess(), 
run(), 
start(), 
stop(), 
SecurityManager.checkAccess(Thread), 
SecurityManager.checkPermission(java.security.Permission)public void interrupt()
 このスレッドの  checkAccess メソッドが最初に呼び出されます。このメソッドにより、SecurityException がスローされる場合があります。
Object クラスの wait()、wait(long)、wait(long, int) メソッドの呼び出し、またはこのクラスの join(), join(long)、join(long, int)、sleep(long)、または sleep(long, int) メソッドの呼び出しでこのスレッドがブロックされる場合、割り込みステータスはクリアされ、InterruptedException を受け取ります。
割り込み可能チャネル に対する I/O 操作でこのスレッドがブロックされる場合、チャネルは閉じられ、スレッドの割り込みステータスが設定されます。また、スレッドは ClosedByInterruptException を受け取ります。
Selector でこのスレッドがブロックされる場合、スレッドの割り込みステータスが設定されて、選択操作から即座に返されます。通常、返される値は、セレクタの wakeup メソッドが呼び出される場合と同じく、ゼロ以外の値になります。
前述の条件のどれにも当てはまらない場合、このスレッドの割り込みステータスが設定されます。
SecurityException - 現在のスレッドがこのスレッドを変更できない場合public static boolean interrupted()
true、そうでない場合は falseisInterrupted()public boolean isInterrupted()
true、そうでない場合は falseinterrupted()public void destroy()
public final boolean isAlive()
true、そうでない場合は falsepublic final void suspend()
resume を呼び出す前にこのモニターをロックしようとすると、デッドロックが発生します。通常、そのようなデッドロックは、自身を「フリーズした」プロセスとして表明します。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。
まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。 この結果、(現在のスレッド内で) SecurityException がスローされることがあります。
スレッドは、生存している場合に中断され、再開されない処理を先に進めることはできません。
SecurityException - 現在のスレッドがこのスレッドを変更できない場合checkAccess()public final void resume()
suspend() とともに使用するためだけに提供されています。詳細は、「Thread.stop、Thread.suspend、および Thread.resume が推奨されない理由」を参照してください。
まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。 この結果、(現在のスレッド内で) SecurityException がスローされることがあります。
スレッドは、生存しているが中断されている場合、実行が再開されて処理を先に進めることが許可されます。
SecurityException - 現在のスレッドがこのスレッドを変更できない場合checkAccess(), 
suspend()public final void setPriority(int newPriority)
まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。この結果、SecurityException がスローされることがあります。
そうでない場合、このスレッドの優先順位は、指定された newPriority とスレッドのスレッドグループの最高許容優先順位の内のどちらか小さい方に設定されます。
newPriority - このスレッドを設定する優先順位
IllegalArgumentException - 優先順位が MIN_PRIORITY 〜 MAX_PRIORITY の範囲外である場合
SecurityException - 現在のスレッドがこのスレッドを変更できない場合getPriority(), 
checkAccess(), 
getPriority(), 
getThreadGroup(), 
MAX_PRIORITY, 
MIN_PRIORITY, 
ThreadGroup.getMaxPriority()public final int getPriority()
setPriority(int), 
setPriority(int)public final void setName(String name)
name に等しくなるように変更します。
まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。この結果、SecurityException がスローされることがあります。
name - このスレッドの新しい名前
SecurityException - 現在のスレッドがこのスレッドを変更できない場合getName(), 
checkAccess(), 
getName()public final String getName()
setName(java.lang.String), 
setName(java.lang.String)public final ThreadGroup getThreadGroup()
public static int activeCount()
public static int enumerate(Thread[] tarray)
enumerate メソッドを、配列引数を指定して呼び出すだけです。
セキュリティマネージャが存在する場合、enumerate メソッドは、スレッドグループを引数としてセキュリティマネージャの checkAccess メソッドを呼び出します。この結果、SecurityException がスローされることがあります。
tarray - Thread オブジェクトのコピー先配列
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkAccess メソッドがこの操作を許可しない場合ThreadGroup.enumerate(java.lang.Thread[]), 
SecurityManager.checkAccess(java.lang.ThreadGroup)public int countStackFrames()
suspend() に依存します。また、この呼び出しの結果は保証されません。
IllegalThreadStateException - このスレッドが中断されない場合
public final void join(long millis)
                throws InterruptedException
millis ミリ秒待機します。0 のタイムアウトは永遠に待機することを意味します。
millis - ミリ秒単位の待機時間
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされる
public final void join(long millis,
                       int nanos)
                throws InterruptedException
millis ミリ秒に nanos ナノ秒を加算した間、このスレッドが終了するのを待機します。
millis - ミリ秒単位の待機時間nanos - 待機するための 0 〜 999999 の追加ナノ秒
IllegalArgumentException - millis の値が負数の場合、または nanos の値が 0 〜 999999 の範囲外の場合
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされる
public final void join()
                throws InterruptedException
InterruptedException - 別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの割り込みステータスはクリアされるpublic static void dumpStack()
Throwable.printStackTrace()public final void setDaemon(boolean on)
このメソッドは、スレッド起動前に呼び出す必要があります。
このメソッドは、引数なしでこのスレッドの checkAccess メソッドを呼び出します。この結果、現在のスレッドで SecurityException  がスローされることがあります。
on - true の場合、このスレッドをデーモンスレッドとしてマークする
IllegalThreadStateException - このスレッドがアクティブな場合
SecurityException - 現在のスレッドがこのスレッドを変更できない場合isDaemon(), 
checkAccess()public final boolean isDaemon()
true、そうでない場合は falsesetDaemon(boolean)public final void checkAccess()
セキュリティマネージャが存在する場合、このスレッドがその引数に指定されて checkAccess メソッドが呼び出されます。この結果、SecurityException がスローされることがあります。
注: このメソッドが JDK 1.1 では final でなかったのは誤りです。Java 2 プラットフォームでは final になっています。
SecurityException - 現在のスレッドがこのスレッドへのアクセスを許されていない場合SecurityManager.checkAccess(java.lang.Thread)public String toString()
Object 内の toStringpublic ClassLoader getContextClassLoader()
セキュリティマネージャが存在する場合、呼び出し側のクラスローダが null ではなく、コンテキストクラスローダを要求されているスレッドのコンテキストクラスローダと同じでなく、そのコンテキストクラスローダの上位オブジェクトでもないときは、コンテキスト ClassLoader を取得してもよいかどうかを確認するために、RuntimePermission("getClassLoader") アクセス権を使って、セキュリティマネージャの checkPermission メソッドが呼び出されます。
SecurityException - セキュリティマネージャが存在し、セキュリティマネージャの checkPermission メソッドがコンテキスト ClassLoader の取得を許可しない場合setContextClassLoader(java.lang.ClassLoader), 
SecurityManager.checkPermission(java.security.Permission), 
RuntimePermissionpublic void setContextClassLoader(ClassLoader cl)
セキュリティマネージャが存在する場合、最初に、コンテキスト ClassLoader を設定してよいかどうかを調べるために RuntimePermission("setContextClassLoader") アクセス権を使って checkPermission メソッドが呼び出されます。
cl - この Thread のコンテキスト ClassLoader
SecurityException - 現在のスレッドがコンテキスト ClassLoader を設定できない場合getContextClassLoader(), 
SecurityManager.checkPermission(java.security.Permission), 
RuntimePermissionpublic static boolean holdsLock(Object obj)
このメソッドは、以下のように、プログラムが、現行スレッドが指定されたロックをすでに保持していることを示す際に使用されます。
     assert Thread.holdsLock(obj);
 
obj - 所有権のロックをテストするオブジェクト
NullPointerException - obj が null の場合| 
 | JavaTM 2 Platform Std. Ed. v1.4.0 | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
 Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
 Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A.  All Rights Reserved.