Package org.h2.util
Class ThreadDeadlockDetector
- java.lang.Object
-
- org.h2.util.ThreadDeadlockDetector
-
public class ThreadDeadlockDetector extends java.lang.ObjectDetects 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 ThreadDeadlockDetectordetectorprivate static java.lang.StringINDENTprivate java.lang.management.ThreadMXBeanthreadBean
-
Constructor Summary
Constructors Modifier Constructor Description privateThreadDeadlockDetector()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidcheckForDeadlocks()Checks if any threads are deadlocked.static voiddumpAllThreadsAndLocks(java.lang.String msg)Dump all deadlocks (if any).static voiddumpAllThreadsAndLocks(java.lang.String msg, java.io.PrintStream out)Dump all deadlocks (if any).private static voiddumpThreadsAndLocks(java.lang.String msg, java.lang.management.ThreadMXBean threadBean, long[] threadIds, java.io.PrintStream out)static voidinit()Initialize the detector.private static voidprintLockInfo(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 voidprintThread(java.io.PrintWriter print, java.lang.management.ThreadInfo ti)private static voidprintThreadInfo(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)
-
-