void (@NotNull ThreadInfo info, @NotNull Writer f, StackTraceElement @NotNull [] stackTraceElements) { try { @NonNls StringBuilder sb = new StringBuilder("\"").append(info.getThreadName()).append("\""); sb.append(" prio=0 tid=0x0 nid=0x0 ").append(getReadableState(info.getThreadState())).append("\n"); sb.append(" java.lang.Thread.State: ").append(info.getThreadState()).append("\n"); if (info.getLockName() != null) { sb.append(" on ").append(info.getLockName()); } if (info.getLockOwnerName() != null) { sb.append(" owned by \"").append(info.getLockOwnerName()).append("\" Id=").append(info.getLockOwnerId()); } if (info.isSuspended()) { sb.append(" (suspended)"); } if (info.isInNative()) { sb.append(" (in native)"); } f.write(sb + "\n"); printStackTrace(f, stackTraceElements); f.write("\n"); } catch (IOException e) { throw new RuntimeException(e); } }