You can execute a thread dump and see exactly what those threads are doing when they are hung... chance are they are waiting on something. You run a kill -3 on UNIX but under windows it is a little bit different, see this link here:
When you run it it will generate a file. The file will contain each thread running in the system. The thread numbers should correspond to the threads that you are getting in your logs telling you that they are hung. Post up some of the hung threads and I will take a look at them.
Regards,
Michael.
Michael Ransley
2009-09-17 15:59:46