9

Tomcat (またはおそらく他のコンテナー) で実行されている webapp から独自のスレッドを開始するべきではないと誰かが私に言いました。

Runnable myRunnable = new Runnable() {
  public void run() {
    System.out.println("I'm running");
  }
}

new Thread(myRunnable).start();

または同様に:

ScheduledThreadPoolExecutor retrySchedulerService = new ScheduledThreadPoolExecutor(3);
retrySchedulerService.schedule(dlrRetryTask, 120, TimeUnit.SECONDS);

上記のいずれかの代わりに、Tomcat が認識しているスレッドのプールからスレッドを要求することになっています。これには何か真実がありますか?

4

2 に答える 2

9

独自のスレッドを自由に開始できますが、アプリケーションが停止したときにスレッドを停止することを忘れないでください。Tomcat には独自の thead プールがあり、着信要求の処理に使用されます。たとえアクセスできたとしても、それを使うのは得策ではないと思います。

一般に、Java EE 環境でスレッドを開始することは良い方法ではありませんが、Tomcat のようなサーブレット コンテナーでスレッドを開始することは悪いことではありません。

于 2012-04-24T16:53:05.003 に答える
1

ここでは、サーブレットからスレッドを実行する方法について説明します。

http://www.jguru.com/faq/view.jsp?EID=455215

もう 1 つの議論は、EJB コンテナーからのスレッドの実行に関するものです。

Java EE仕様とマルチスレッド

于 2012-04-24T18:16:15.993 に答える