public class

ThreadUtil

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

Class Overview

Utility methods to manipulate threads.

Summary

Public Constructors
ThreadUtil()
Public Methods
static Thread create(Runnable r)
Create a daemon thread.
static String formatStackTrace(int skipcnt)
Convenience method to generate the simplified stack trace of the caller, on a single line.
static String formatStackTrace(int skipcnt, String separator, boolean displayClassPackageName, boolean displayLineNumber)
Convenience method to generate the simplified stack trace of the caller.
static String formatStackTrace()
Convenience method to generate the simplified stack trace of the caller, on a single line.
static void interruptAndJoinUninterruptibly(Thread thread)
Interrupt the target thread and wait for it to terminate, uninterruptibly.
static void joinU(Thread thread)
Join a thread uninterruptibly.
static boolean monitor(Thread t, IMonitorInfoProvider provider)
Monitor a running thread, and attempt to terminate it after a dynamic timeout has elapsed.
static Thread start(Runnable r)
Create and start a new daemon thread.
static Thread start(String name, Runnable r)
Create and start a new daemon thread.
static boolean stop(Thread t)
Gracefully stop a running thread.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public ThreadUtil ()

Public Methods

public static Thread create (Runnable r)

Create a daemon thread. The thread is not started.

Parameters
r the runnable
Returns
  • the new thread

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

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 (" < ")
Returns
  • the formatted stack trace

public static String formatStackTrace ()

Convenience method to generate the simplified stack trace of the caller, on a single line.

Returns
  • the formatted stack trace

public static void interruptAndJoinUninterruptibly (Thread thread)

Interrupt the target thread and wait for it to terminate, uninterruptibly.

Parameters
thread target Thread

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

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

public static Thread start (Runnable r)

Create and start a new daemon thread.

Parameters
r the runnable
Returns
  • the running thread

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

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