全てのJavaのスレッドは、ある「スレッド・グループ」に属します。
複数のスレッド達を、一つのグループに束ねることによって、例えば、
これらの複数のスレッドの実行を同時に開始したり、中断したりする
ということが可能になります。
実は、グループを意識しなくても、スレッドが作られる時には、自動的に デフォールトの「スレッド・グループ」に登録されるのですが、スレッド 生成時に、「スレッド・グループ」を指定することも出来ます。
ただ、注意して欲しいことは、スレッド・グループへの所属は、スレッド 生成時に決まり、途中で変更することは出来ないということです。
生成時に、特に何も指定しないと、そのスレッドは、「main」という名前の デフォールトのグループに属します。
あるスレッドが所属するグループを知る為には、getThreadGroup()という メソッドを用います。
myGroup = mySampleThread.getThreadGroup() ;
グループの指定は、スレッドのコンストラクタに、スレッド・グループを 指定する形で行われます。ですから、先に述べたように、グループの所属は、 スレッドの生成時に決まってしまうわけです。
次に、そのコンストラクタを示します。
public Thread(ThreadGroup group, Runnable target) public Thread(ThreadGroup group, String name) public Thread(ThreadGroup group, Runnable target, String name)
こうした指定をする前に、スレッド・グループを作っておかなければ なりませんので、実際のコードは、次のようなものになります。
ThreadGroup myThreadGroup = new ThreadGroup("My Group of Threads"); Thread myThread = new Thread(myThreadGroup, "a thread for my group");
もっとも、スレッド・グループは、自分で作る必要はなく、 Javaのruntime system や、既にあるアプリケーションのグループを 利用することもできます。
ThreadGroup クラスには、次のようなメソッドがあります。