9

Someone told me that you shouldn't start your own threads from a webapp running under Tomcat (or any other container, presumably)

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

new Thread(myRunnable).start();

Or similarly:

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

Instead of either of the above, you're supposed to request a thread from some pool of threads that Tomcat knows about. Is there any truth to this, or is it utter poppycock?

Dónal
  • 185,044
  • 174
  • 569
  • 824

2 Answers2

9

Feel free to start your own threads, but remember to stop them when the application stops. Tomcat got its own thead pool, which is used for handling incoming requests. I don't think that it's a good idea to use it, even if you manage to get access to it.

Generally, it's not a good practice to start threads in a Java EE environment, but nothing bad in starting threads in a servlet container like Tomcat.

gustavohenke
  • 40,997
  • 14
  • 121
  • 129
Anton
  • 5,831
  • 3
  • 35
  • 45
1

Here is a discussion about running thread from servlet.

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

Another discussion is about running thread from an EJB container.

Java EE specification and multi threading

Community
  • 1
  • 1
Sujith Nair
  • 367
  • 3
  • 9