Also you may try to use a javacore to figure out how your threads got hung (blocking on a resource, doing a lengthy computation or a synchronization issue etc.). Since a javacore shows call stack of threads, you may probably also infer which application used a
thread by checking which packages and classes were used during invocation.
I don't have any experience on i5, but you may check following support document to see how you can manually generate a javacores (also called JVM thread dump);
MustGather: Overview of Application Server, Node Agent, and Deployment Manager Hang Problems for IBM i (i5/OS) , Appendix A.
Javacore files are plain text and you can read them with a text editor but that requires a lot of scrolling back and forward. I suggest after collecting dumps, you download
IBM Thread and Monitor Dump Analyzer for Java and check your dumps using this tool, which presents the javacore in a much more understandable fashion. Tool page also contains links for guidance on how to use this tool to analyze hung thread problems.
Generate javacores when you notice WSVR0605W messages that are reporting there are hung threads, as in your post. Then check the javacore generated, using the tool above to see what those threads were doing. Threads appear in the tool with the same name as reported in the warning messages in your log (i.e. WebContainer : 1111, WebContainer 1113... in your previous post), so you may locate them easily.
This is not a trivial approach but may provide an answer to your question. Good luck.