7

I would like to ask a basic question before i get on to my main question .

Lets say i am running a simple Java program, which spawns a thread in the main function. Will the thread continue to run when the main function completes? Is there a concept of parent/child relationships between threads.

I have a servlet which takes a long while to process a request (5 mins). Can i spawn a background thread from the main servlet to handle the work & return soon. Would the background thread keep running even when the main servlet has finished processing?

Pramanat
  • 375
  • 1
  • 3
  • 7

2 Answers2

4

When you want your application to exit even though you still have running threads, you have to mark your thread as a daemon thread:

Thread t = new Thread(myRunnable);
t.setDaemon(true),
t.start();

This is especially important when you do that in an application server, otherwise the server cannot be shut down!

If you do that repeatedly you might want to consider a ThreadPool to make this more efficient

2
  • There is such thing as parent and child threads, but you don't have a lot of control on that. For example there's InheritableThreadLocal, where you can store variables for a thread hierarchy.

  • you can spawn a new thread from a servlet. Prefer Java 5 executors framework

  • if using servlet 3.0, take a look at its asynchronous processing capabilities.

Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140