next up previous contents
Next: 演習課題 Up: Thread Previous: Threadのステータス

ThreadGroup

全てのJavaのスレッドは、ある「スレッド・グループ」に属します。 複数のスレッド達を、一つのグループに束ねることによって、例えば、 これらの複数のスレッドの実行を同時に開始したり、中断したりする ということが可能になります。

実は、グループを意識しなくても、スレッドが作られる時には、自動的に デフォールトの「スレッド・グループ」に登録されるのですが、スレッド 生成時に、「スレッド・グループ」を指定することも出来ます。

ただ、注意して欲しいことは、スレッド・グループへの所属は、スレッド 生成時に決まり、途中で変更することは出来ないということです。

Default Thread Group

生成時に、特に何も指定しないと、そのスレッドは、「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 クラスには、次のようなメソッドがあります。

activeCount
このスレッド・グループでアクティブなスレッドの数。
getMaxPriority
このスレッド・グループで最も高いプライオリティ。
setMaxPriority
スレッド・グループの最も高いプライオリティを設定。
getParent
このスレッド・グループの親。
suspend
実行の中断。
resume
中断からの回復。
stop
実行の停止。



maruyama@wakhok.ac.jp