全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.lang.Thread
各スレッドは優先順位を持っています。優先順位が高いスレッドの方が、優先順位が低いスレッドより優先して実行されます。また、各スレッドがデーモンとしてマークされていることもあれば、されていないこともあります。あるスレッドで実行中のコードが新しい Thread オブジェクトを作成すると、この新しいスレッドには、当初、作成側のスレッドの優先順位に等しい優先順位が設定され、作成側スレッドがデーモンである場合にだけ、デーモンスレッドになります。
 
 
 通常、Java 仮想マシンが起動すると、(一般的にはある指定されたクラスの main という名前がつけられたメソッドを呼び出す)1つのデーモンスレッドではないスレッドが存在します。 Java 仮想マシンは、以下のどれかが発生するまでスレッドの実行を続行します。
 
Runtimeのexitメソッドが呼び出され、セキュリティマネージャが exit 動作を許可しました。
 run メソッドの呼び出しから戻るか、または stop メソッドを実行することによってデーモンスレッドでないすべてのスレッドが死んでしまいました。
 
 新しい実行のスレッドを作成するには 2 通りの方法があります。最初の方法はクラスを 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();
 
 スレッドを作成するもう一つの方法は、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();
 各スレッドは識別するための名前を持ちます。複数のスレッドが同じ名前を持つことがあります。スレッドが作成されたときに名前が指定されないと、スレッドには新しい名前が作成されます。
 
 MAX_PRIORITY
	MAX_PRIORITY
   MIN_PRIORITY
	MIN_PRIORITY
   NORM_PRIORITY
	NORM_PRIORITY
   
 Thread()
	Thread()
  Thread オブジェクトを割り当てる。
   Thread(Runnable)
	Thread(Runnable)
  Thread オブジェクトを割り当てる。
   Thread(Runnable、String)
	Thread(Runnable、String)
  Thread オブジェクトを割り当てる。
   Thread(String)
	Thread(String)
  Thread オブジェクトを割り当てる。
   Thread(ThreadGroup, Runnable)
	Thread(ThreadGroup, Runnable)
  Thread オブジェクトを割り当てる。
   Thread(ThreadGroup, Runnable、String)
	Thread(ThreadGroup, Runnable、String)
  target 、名前として指定した nameをもつ、groupによって参照されるスレッドグループに属するような、新規Thread オブジェクトを割り当てる。
   Thread(ThreadGroup, String)
	Thread(ThreadGroup, String)
  Thread オブジェクトを割り当てる。
 
 activeCount()
	activeCount()
   checkAccess()
	checkAccess()
   countStackFrames()
	countStackFrames()
   currentThread()
	currentThread()
   destroy()
	destroy()
   dumpStack()
	dumpStack()
   enumerate(Thread[])
	enumerate(Thread[])
   getName()
	getName()
   getPriority()
	getPriority()
   getThreadGroup()
	getThreadGroup()
   interrupt()
	interrupt()
   interrupted()
	interrupted()
   isAlive()
	isAlive()
   isDaemon()
	isDaemon()
   isInterrupted()
	isInterrupted()
   join()
	join()
   join(long)
	join(long)
  millis ミリ秒の間このスレッドが死ぬのを待つ。
   join(long, int)
	join(long, int)
  millis ミリ秒に nanos ナノ秒を加算した間このスレッドが死ぬのを待つ。
   resume()
	resume()
   run()
	run()
  Runnable オブジェクトを使用して構築された場合、その Runnable オブジェクトのrunメソッドが呼び出される。それ以外の場合には、このメソッドは何も実行しないで返す。
   setDaemon(boolean)
	setDaemon(boolean)
   setName(文字列)
	setName(文字列)
  name に等しくなるように変更する。
   setPriority(int)
	setPriority(int)
   sleep(long)
	sleep(long)
   sleep(long, int)
	sleep(long, int)
   start()
	start()
  run メソッドを呼び出す。
   stop()
	stop()
   stop(Throwable)
	stop(Throwable)
   suspend()
	suspend()
   toString()
	toString()
   yield()
	yield()
   
 MIN_PRIORITY
MIN_PRIORITY
public static final int MIN_PRIORITY
 NORM_PRIORITY
NORM_PRIORITY
public static final int NORM_PRIORITY
 MAX_PRIORITY
MAX_PRIORITY
public static final int MAX_PRIORITY
 
 Thread
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++; 
             }
         }
     }
 
 Thread
Thread
public Thread(Runnable target)
Thread オブジェクトを割り当てます。この構築子は、 Thread( null、target、
 gname)と同じ効果を持ちます。この場合gnameは新規に作成される名前です。自動的に作成される名前は、 n が整数とすると"Thread-"+nの形式を取ります。
runメソッドが呼び出されるオブジェクト
     Thread
Thread
  public Thread(ThreadGroup group,
                Runnable target)
Thread オブジェクトを割り当てます。構築子は、 Thread(group、target、
 gname)と同じ効果を持ちます。この場合、 gname は、新規に作成される名前です。自動的に作成される名前は、 n が整数とすると "Thread-"+n の形式を取ります。
run メソッドが呼び出されるオブジェクト
     Thread
Thread
public Thread(String name)
Thread( null、 null、name )と同じ効果を持ちます。
 Thread
Thread
  public Thread(ThreadGroup group,
                String name)
Threadオブジェクトを割り当てます。この構築子は、 Thread( group、 null、name )と同じ効果を持ちます。
 Thread
Thread
  public Thread(Runnable target,
                String name)
Thread オブジェクトを割り当てます。この構築子は、 Thread( null、target、name ) と同じ効果を持ちます。
run メソッドが呼びされるオブジェクト
     Thread
Thread
  public Thread(ThreadGroup group,
                Runnable target,
                String name)
target 、名前として指定した nameをもつ、groupによって参照されるスレッドグループに属するような、新規Thread オブジェクトを割り当てます。
 
group が  null ではない場合、そのスレッドグループのcheckAccess メソッドは引数を指定されずに呼び出されます。このため、SecurityException がスローされる結果となります。 group が  null である場合は、新規プロセスは新規スレッドを作成するスレッドと同じグループに属します。
 
 target 引数が  null ではない場合、このスレッドが起動されると target の run メソッドが呼び出されます。 target 引数が  null である場合は、このスレッドが起動されるときにこのスレッドの run メソッドが呼び出されます。
 
 新規に作成されたスレッドの優先順位は、そのスレッドを作成したスレッド、つまり現在実行中のスレッドの優先順位に等しく設定されます。この優先順位を新しい値に変更する場合は、メソッド setPriority を使用できます。
 
 新規に作成されたスレッドは、それを作成するスレッドがデーモンスレッドとマークされている場合にだけ、デーモンスレッドとマークされます。スレッドがデーモンであるかどうかを変更する場合は、メソッド setDaemon  を使用できます。
run 方法が呼び出されるオブジェクト
     
 currentThread
currentThread
public static native Thread currentThread()
 yield
yield
public static native void yield()
 sleep
sleep
public static native void sleep(long millis) throws InterruptedException
 sleep
sleep
  public static void sleep(long millis,
                           int nanos) throws InterruptedException
 start
start
public native synchronized void start()
run メソッドを呼び出します。
その結果、(start メソッドへの呼び出しから返る)現在のスレッドと(その run メソッドを実行する)別のスレッドという 2 つのスレッドが並列に実行します。
 run
run
public void run()
Runnable 実行オブジェクトを使用して構築された場合、その Runnable オブジェクトの run メソッドが呼び出されます。それ以外の場合、このメソッドは何も実行しないで返ります。
 
  Thread のサブクラスは、このメソッドをオーバーライドします。
 stop
stop
public final void stop()
 まず、このスレッドの checkAccess メソッドが引数なしで呼び出されます。この結果、(現在のスレッド内で) SecurityException がスローされることがあります。
 
 このスレッドによって表されるスレッドは、
それが実行していた動作に関係なく強制的に異常停止させられ、新規に作成した ThreadDeath オブジェクトを例外としてスローします。
 
まだ起動されていないスレッドを停止することが許可されています。スレッドが最終的に起動すると、ただちに終了します。
 アプリケーションは、異常なクリーンアップ動作を実行しなければならない場合を除き、通常は、ThreadDeath をキャッチすべきではありません(ThreadDeath をスローすると、スレッドが公式に死ぬ前に try 文の finally 節が実行されることに注意してください)。catch 節が 
 ThreadDeath オブジェクトをキャッチする場合、スレッドが実際に死ぬようにオブジェクトをスローし直すことが重要です。
 
そうでなければキャッチされていない例外を扱う最高レベルのエラーハンドラは、キャッチされていない例外が ThreadDeath のインスタンスであるならばメッセージを出力したり、アプリケーションに通知しません。
 stop
stop
public final synchronized void stop(Throwable o)
 まず、このスレッドの checkAccess メソッドが引数なしで呼び出されます。この結果、(現在のスレッド内で)SecurityException  がスローされることがあります。
 
引数 obj が null の場合、NullPointerException が(現在のスレッド内で)スローされます。
 
このスレッドによって表されるスレッドは、それが実行する動作には関係なく強制的に異常終了させられ、例外として Throwable オブジェクト obj をスローさせられます。これは、普段はとらない動作であるため、通常は引数を設定しない stop メソッドを使用してください。
 
まだ起動されていないスレッドを停止することができます。スレッドが最終的に起動されると、すぐに終了します。
 interrupt
interrupt
public void interrupt()
 interrupted
interrupted
public static boolean interrupted()
interterrupted は静的なメソッドですが、 isInterrupted が現在のThread のインスタンスで呼び出されることに注意してください。
true、
現在のスレッドが割り込まれていない場合 false 
     isInterrupted
isInterrupted
public boolean isInterrupted()
isInterrupted が Thread のインスタンス上で呼び出されるのに対し、 interrupted は静的なメソッドであることに注意してください。
true、
このスレッドが割り込まれていない場合 false 
 destroy
destroy
public void destroy()
 isAlive
isAlive
public final native boolean isAlive()
true、 
         このスレッドが生きていない場合 false 
   suspend
suspend
public final void suspend()
まず、このスレッドのe checkAccess メソッドが引数なしで呼び出されます。この結果、(現在のスレッド内で)SecurityException  がスローされることがあります。
 
スレッドは、生きている場合中断され、再開されない限りずっと先に進みません。
 resume
resume
public final void resume()
 まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。この結果、(現在のスレッド内で) SecurityExceptionが呼び出されることがあります。
 
スレッドが生きているけれども中断されている場合、スレッドは、再開され、その実行で先に進むことが許されています。
 setPriority
setPriority
public final void setPriority(int newPriority)
 まず、このスレッドの checkAccess メソッドが引数なしで呼び出されます。この結果、SecurityException がスローされることがあります。
 
 それ以外の場合、このスレッドの優先順位は、指定された newPriority  とスレッドのスレッドグループの最高許容優先順位の内のどちらか小さい方に設定されます。
MIN_PRIORITY から
               MAX_PRIORITY にない場合
     getPriority
getPriority
public final int getPriority()
 setName
setName
public final void setName(String name)
name に等しくなるように変更します。
 
 まず、このスレッドの checkAccess メソッドが、引数なしで呼び出されます。この結果、SecurityExceptionがスローされることがあります。
 getName
getName
public final String getName()
 getThreadGroup
getThreadGroup
public final ThreadGroup getThreadGroup()
 activeCount
activeCount
public static int activeCount()
 enumerate
enumerate
public static int enumerate(Thread tarray[])
enumerate メソッドを呼び出すだけです。
 countStackFrames
countStackFrames
public native int countStackFrames()
 join
join
public final synchronized void join(long millis) throws InterruptedException
millis ミリ秒待ちます。0 の制限時間は永遠に待機することを意味します。
 join
join
  public final synchronized void join(long millis,
                                      int nanos) throws InterruptedException
millis ミリ秒に nanos ナノ秒を加算した間、このスレッドが死ぬのを待ちます。
 join
join
public final void join() throws InterruptedException
 dumpStack
dumpStack
public static void dumpStack()
 setDaemon
setDaemon
public final void setDaemon(boolean on)
このメソッドは、スレッド起動前に呼び出す必要があります。
true  である場合、このスレッドをデーモンスレッドとしてマークします。
     isDaemon
isDaemon
public final boolean isDaemon()
true、 
         このスレッドがデーモンスレッドではない場合 false 
     checkAccess
checkAccess
public void checkAccess()
 セキュリティマネージャが存在する場合、このスレッドをその引数として指定して checkAccess メソッドが呼び出されます。この結果、  SecurityException がスローされることがあります。
 toString
toString
public String toString()
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス