static volatile L printDeadlocks_lastDeadlock; static L printDeadlocks() { ThreadMXBean bean = ManagementFactory.getThreadMXBean(); long ids[] = bean.findDeadlockedThreads(); if (empty(ids)) ret emptyList(); printAsciiHeading(upper(n2(ids, "deadlocked thread"))); ThreadInfo threadInfo[] = bean.getThreadInfo(ids); print("Got " + n2(threadInfo, "thread info")); S info = print(deadlockedThreadsToString(asList(threadInfo))); appendToFile(javaxDataDir("deadlocks.txt"), "\n\n" + localDateWithSeconds() + "\n\n" + info); ret printDeadlocks_lastDeadlock = asList(threadInfo); }