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 有自己的线程池,用于处理传入的请求。我不认为使用它是一个好主意,即使您设法访问它。

通常,在 Java EE 环境中启动线程不是一个好习惯,但在 Tomcat 等 servlet 容器中启动线程也没什么不好。

于 2012-04-24T16:53:05.003 回答
1

这是关于从 servlet 运行线程的讨论。

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

另一个讨论是关于从 EJB 容器运行线程。

Java EE 规范和多线程

于 2012-04-24T18:16:15.993 回答