在Tomcat下启动线程

时间:2012-04-24 16:48:15

标签: java multithreading tomcat

有人告诉我,你不应该从在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知道的某些线程池中请求一个线程。这有什么道理,还是完全爆发?

2 个答案:

答案 0 :(得分:9)

随意启动自己的线程,但请记住在应用程序停止时停止它们。 Tomcat有自己的thead池,用于处理传入的请求。即使您设法访问它,我也不认为使用它是个好主意。

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

答案 1 :(得分:1)

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

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

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

Java EE specification and multi threading