Package org.h2.util
Class ThreadDeadlockDetector
- java.lang.Object
-
- org.h2.util.ThreadDeadlockDetector
-
public class ThreadDeadlockDetector extends java.lang.Object
Detects deadlocks between threads. Prints out data in the same format as the CTRL-BREAK handler, but includes information about table locks.
-
-
Field Summary
Fields Modifier and Type Field Description private static ThreadDeadlockDetector
detector
private static java.lang.String
INDENT
private java.lang.management.ThreadMXBean
threadBean
-
Constructor Summary
Constructors Modifier Constructor Description private
ThreadDeadlockDetector()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
checkForDeadlocks()
Checks if any threads are deadlocked.static void
dumpAllThreadsAndLocks(java.lang.String msg)
Dump all deadlocks (if any).static void
dumpAllThreadsAndLocks(java.lang.String msg, java.io.PrintStream out)
Dump all deadlocks (if any).private static void
dumpThreadsAndLocks(java.lang.String msg, java.lang.management.ThreadMXBean threadBean, long[] threadIds, java.io.PrintStream out)
static void
init()
Initialize the detector.private static void
printLockInfo(java.io.PrintWriter print, java.lang.management.LockInfo[] locks, java.lang.String tableWaitingForLock, java.util.ArrayList<java.lang.String> tableExclusiveLocks, java.util.ArrayList<java.lang.String> tableSharedLocksMap)
private static void
printThread(java.io.PrintWriter print, java.lang.management.ThreadInfo ti)
private static void
printThreadInfo(java.io.PrintWriter print, java.lang.management.ThreadInfo ti)
-
-
-
Field Detail
-
INDENT
private static final java.lang.String INDENT
- See Also:
- Constant Field Values
-
detector
private static ThreadDeadlockDetector detector
-
threadBean
private final java.lang.management.ThreadMXBean threadBean
-
-
Method Detail
-
init
public static void init()
Initialize the detector.
-
checkForDeadlocks
void checkForDeadlocks()
Checks if any threads are deadlocked. If any, print the thread dump information.
-
dumpAllThreadsAndLocks
public static void dumpAllThreadsAndLocks(java.lang.String msg)
Dump all deadlocks (if any).- Parameters:
msg
- the message
-
dumpAllThreadsAndLocks
public static void dumpAllThreadsAndLocks(java.lang.String msg, java.io.PrintStream out)
Dump all deadlocks (if any).- Parameters:
msg
- the messageout
- the output
-
dumpThreadsAndLocks
private static void dumpThreadsAndLocks(java.lang.String msg, java.lang.management.ThreadMXBean threadBean, long[] threadIds, java.io.PrintStream out)
-
printThreadInfo
private static void printThreadInfo(java.io.PrintWriter print, java.lang.management.ThreadInfo ti)
-
printThread
private static void printThread(java.io.PrintWriter print, java.lang.management.ThreadInfo ti)
-
printLockInfo
private static void printLockInfo(java.io.PrintWriter print, java.lang.management.LockInfo[] locks, java.lang.String tableWaitingForLock, java.util.ArrayList<java.lang.String> tableExclusiveLocks, java.util.ArrayList<java.lang.String> tableSharedLocksMap)
-
-