Package org.h2.util

Class 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.
    • 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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ThreadDeadlockDetector

        private ThreadDeadlockDetector()
    • 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 message
        out - 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)