在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知道的某些线程池中请求一个线程。 对此有任何道理,还是完全是poppycock?

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

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

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

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

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

Java EE规范和multithreading