static L printDeadlocks() { ThreadMXBean bean = ManagementFactory.getThreadMXBean(); long ids[] = bean.findMonitorDeadlockedThreads(); if (empty(ids)) ret emptyList(); printAsciiHeading("DEADLOCKED THREADS!"); ThreadInfo threadInfo[] = bean.getThreadInfo(ids); int i = 0; for (ThreadInfo threadInfo1 : threadInfo) { print("Thread + (++i) + "/" + l(threadInfo) + ": ID=" + threadInfo1.getThreadId() + ", name=" + quote(threadInfo1.getThreadName())); print(" Lock name: " + threadInfo1.getLockName() + ", lock owner thread: " + threadInfo1.getLockOwnerId() + " (" + quote(threadInfo1.getLockOwnerName()) + ")"); } print(); ret asList(threadInfo); }