Capturing a thread dump in java

Prior to Java 1.5, capturing a thread dump required use of JMPI and JNI, pressing control-BREAK in the java console or use of a tool such as the adaptj Stack Trace application. With the new API’s in Java 1.5 (5.0), it is now trivial to programatically capture a thread dump of your java application.

The following method provides a simple way to capture a thread dump of the JVM that this method is executing within.

public static String captureThreadDump()
 Map allThreads = Thread.getAllStackTraces();
 Iterator iterator = allThreads.keySet().iterator();
 StringBuffer stringBuffer = new StringBuffer();
   Thread key = (Thread);
   StackTraceElement[] trace = (StackTraceElement[])allThreads.get(key);
   for(int i = 0; i < trace.length; i++)
     stringBuffer.append(" "+trace[i]+"\r\n");
 return stringBuffer.toString();