- ids.add(t.getId());
- }
- if (! ids.isEmpty()) {
- long[] idArray = new long[ids.size()];
- for (int i=0; i<ids.size(); i++)
- idArray[i] = ids.get(i);
-
- final ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(idArray, true, true);
- final StringBuilder dump = new StringBuilder();
- for (ThreadInfo threadInfo : threadInfos) {
- dump.append('"');
- dump.append(threadInfo.getThreadName());
- dump.append("\" ");
- final Thread.State state = threadInfo.getThreadState();
- dump.append("\n java.lang.Thread.State: ");
- dump.append(state);
- final StackTraceElement[] stackTraceElements = threadInfo.getStackTrace();
- for (final StackTraceElement stackTraceElement : stackTraceElements) {
- dump.append("\n at ");
- dump.append(stackTraceElement);
- }
- dump.append("\n In native? "+threadInfo.isInNative()+"\n");
- dump.append(" Suspended? "+threadInfo.isSuspended()+"\n");
- dump.append(" Waiting for: "+threadInfo.getLockInfo()+"\n");
- dump.append("\n\n");
- }
- System.err.println(dump);
- }