Class ThreadUtil

java.lang.Object
com.pnfsoftware.jeb.util.concurrent.ThreadUtil

public class ThreadUtil extends Object
Utility methods to manipulate threads.
  • Constructor Details

    • ThreadUtil

      public ThreadUtil()
  • Method Details

    • create

      public static Thread create(Runnable r)
      Create a daemon thread. The thread is not started.
      Parameters:
      r - the runnable
      Returns:
      the new thread
    • start

      public static Thread start(Runnable r)
      Create and start a new daemon thread.
      Parameters:
      r - the runnable
      Returns:
      the running thread
    • start

      public static Thread start(String name, Runnable r)
      Create and start a new daemon thread.
      Parameters:
      name - thread name
      r - the runnable
      Returns:
      the running thread
    • stop

      public static boolean stop(Thread t)
      Gracefully stop a running thread. This method is blocking.
      Parameters:
      t - the running thread
      Returns:
      true if the thread was stopped successfully
    • monitor

      public static boolean monitor(Thread t, IMonitorInfoProvider provider)
      Monitor a running thread, and attempt to terminate it after a dynamic timeout has elapsed. This method is blocking. In order for this method to work properly and responsively, the monitored thread should check for interruptions regularly, and should not disregard InterruptedExceptions.
      Parameters:
      t - the running thread
      provider - information for the monitor (timeout, probingPeriod, etc.); if the probing period is invalid, it will be set to a default 100ms.
      Returns:
      true if the thread has ended successfully (may have ended because it completed, may have ended because it processed the interruption); unless something bad happens (eg, the monitor is interrupted), this method should always return true
    • joinU

      public static void joinU(Thread thread)
      Join a thread uninterruptibly.

      Note: after successfully joining, if an InterruptedException had arisen, the interrupt flag is re-armed.

      Parameters:
      thread - the thread to join on
    • interruptAndJoinUninterruptibly

      public static void interruptAndJoinUninterruptibly(Thread thread)
      Interrupt the target thread and wait for it to terminate, uninterruptibly.
      Parameters:
      thread - target Thread
    • formatStackTrace

      public static String formatStackTrace()
      Convenience method to generate the simplified stack trace of the caller, on a single line.
      Returns:
      the formatted stack trace
    • formatStackTrace

      public static String formatStackTrace(int skipcnt)
      Convenience method to generate the simplified stack trace of the caller, on a single line.
      Parameters:
      skipcnt - how many top-level callers should be removed
      Returns:
      the formatted stack trace
    • formatStackTrace

      public static String formatStackTrace(int skipcnt, String separator, boolean displayClassPackageName, boolean displayLineNumber)
      Convenience method to generate the simplified stack trace of the caller.
      Parameters:
      skipcnt - how many top-level callers should be removed
      separator - optional separator, use null for default (" < ")
      displayClassPackageName -
      displayLineNumber -
      Returns:
      the formatted stack trace