I created a multi-threaded application where each thread posts an XML request to an HTTP server. I place each thread in a ThreadGroup. I noticed that when I poll the number of active threads in the ThreadGroup by using the actievCount() method, I always have one thread active. When I debug the thread and print the contents of the ThreadGroup at 500 ms intervals using the list() method I see my threads but after all my threads are finished and die, I see the following: java.lang.ThreadGroup[name=requests,maxpri=10] Thread[Keep-Alive-Timer:,8,requests] This thread never dies. Does anyone know what this thread is and how it got placed in the ThreadGroup? This thread is not present when I have my threads still active. I am using JDK 1.3.1. Any help would be appreciated. Thanks, Steve
Every thread group requires a monitor thread that maintains state information about the other threads in the group. So it's just running around in the group and checking on your worker threads. It's generally not that efficient to create a group per working thread for that reason.
Make visible what, without you, might perhaps never have been seen. - Robert Bresson
Joined: Sep 19, 2003
When I have worker threads in the group this Keep-Alive-Timer thread is not there. It is only present when all my threads have finished executing. Thanks, Steve