The process of how to solve problem using thread dump is nice - http://www.cubrid.org/blog/dev-platform/how-to-analyze-java-thread-dumps/