こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Servletのスレッドを終了させたい

通常、一つのServletに対して、同一のsession idで(一つのクライアントで)複数並列処理します。

しかし、それじゃ都合が悪いので、一つのServletに対してはsession id毎に一つのスレッドしか発生しないようにしたいと思っています。ただ、あるスレッドが処理している最中にリクエストを受け付けたら、既に動いているスレッドを強制終了させて、後のリクエストのみを処理させたいと思っています。

が、なかなかいい案が思い浮かばず苦悩しています。

要求条件を整理すると次のようになります。
・一つのServletに対して、一つのsession idで一つのスレッドだけしか処理しないようにしたい。
・最後に受け付けたリクエストを活かし、処理中のスレッドは終了させたい。

二つ目の条件を満たすためには、一時的に二つのスレッドが発生することになると思っています。

皆様のお知恵をおかしください。

投稿日時 - 2001-09-20 10:56:26

QNo.138566

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

ThreadGroup(スレッドグループ)を使うのはどうでしょうか?
詳細は、ThreadGroupクラスのリファレンスを見てください。


スレッドグループを取得し、現在のアクティブなスレッドを取得もしくは
破棄し、カレントのリクエストをいかす。というような処理をすれば、
この2点は実現できそうな気がします。

ちなみに、

現在のスレッドからスレッドグループを取得する方法は、

ThreadGroup grp = Thread.currentThread().getThreadGroup()で行えます。

あとは、スレッドグループからアクティブなスレッド数や
スレッドの参照取得、等いろいろ制御ができるので、
これを応用してこの2点を実現できそうな気がしますが。

アドバイスになりましたでしょうか?

投稿日時 - 2001-10-03 19:46:29

あなたにオススメの質問