2011-01-29 20 views
6

私は私の主な質問に着手する前に基本的な質問をしたいと思います。サーブレットからスレッドを生成できますか?

私は、メイン関数のスレッドを生成する単純なJavaプログラムを実行しているとします。 main関数が完了したときにスレッドは実行を継続しますか? スレッド間に親子関係の概念がありますか?

リクエスト(5分)を処理するのに時間がかかるサーブレットがあります。私はメインサーブレットからバックグラウンドスレッドを生成して、すぐに仕事を処理することができます&すぐに戻ります。メイン・サーブレットの処理が終了しても、バックグラウンド・スレッドは実行され続けますか?あなたのアプリケーションは、あなたがまだ実行中のスレッドを持っているにもかかわらず終了する場合

答えて

2
  • あり、これは、より効率的にするためのThreadPoolを検討する必要がありますが、あなたはその上のコントロールの多くを持っていないことを行うと。たとえば、スレッド階層の変数を格納できるInheritableThreadLocalがあります。

  • サーブレットから新しいスレッドを生成できます。 Java 5エグゼキュータ・フレームワークを推奨するサーブレット3.0を使用する場合は、asynchronous processingの機能を参照してください。

4

、あなたはデーモンスレッドとして、あなたのスレッドをマークするを持っている

 
Thread t = new Thread(myRunnable); 
t.setDaemon(true), 
t.start(); 

アプリケーションであることを行うとき、これは特に重要ですサーバーを停止しないと、サーバーをシャットダウンできません。

あなたは繰り返し使用すると、親と子のスレッドのようなものが

関連する問題