Hello Mwithi!
Primary challenge in troubleshooting these sort of problems is: Capturing thread dumps right when application hangs. Apparently it looks like this thread dump you captured when application has recovered from the problem.
It would be better if you can write a cron job to capture thread dump on a every 5 minute interval. So when problem resurfaces - you can go back and analyze the thread dump that was captured during that problematic time frame.
Edit your Comment