java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.lang3.ThreadUtils

public class ThreadUtils extends Object

Helpers for java.lang.Thread and java.lang.ThreadGroup.

#ThreadSafe#

Since:
3.5
See Also:
  • Field Details

    • ALWAYS_TRUE_PREDICATE

      public static final edu.internet2.middleware.grouperClientExt.org.apache.commons.lang3.ThreadUtils.AlwaysTruePredicate ALWAYS_TRUE_PREDICATE
      Predicate which always returns true.
  • Constructor Details

    • ThreadUtils

      public ThreadUtils()

      ThreadUtils instances should NOT be constructed in standard programming. Instead, the class should be used as ThreadUtils.getAllThreads()

      This constructor is public to permit tools that require a JavaBean instance to operate.

  • Method Details

    • findThreadById

      public static Thread findThreadById(long threadId)
      Finds the active thread with the specified id.
      Parameters:
      threadId - The thread id
      Returns:
      The thread with the specified id or null if no such thread exists
      Throws:
      IllegalArgumentException - if the specified id is zero or negative
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadById

      public static Thread findThreadById(long threadId, String threadGroupName)
      Finds the active thread with the specified id if it belongs to a thread group with the specified group name.
      Parameters:
      threadId - The thread id
      threadGroupName - The thread group name
      Returns:
      The threads which belongs to a thread group with the specified group name and the thread's id match the specified id. null is returned if no such thread exists
      Throws:
      IllegalArgumentException - if the specified id is zero or negative or the group name is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadById

      public static Thread findThreadById(long threadId, ThreadGroup threadGroup)
      Finds the active thread with the specified id if it belongs to the specified thread group.
      Parameters:
      threadId - The thread id
      threadGroup - The thread group
      Returns:
      The thread which belongs to a specified thread group and the thread's id match the specified id. null is returned if no such thread exists
      Throws:
      IllegalArgumentException - if the specified id is zero or negative or the group is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadGroups

      public static Collection<ThreadGroup> findThreadGroups(ThreadGroup group, boolean recurse, ThreadUtils.ThreadGroupPredicate predicate)
      Select all active threadgroups which match the given predicate and which is a subgroup of the given thread group (or one of its subgroups).
      Parameters:
      group - the thread group
      recurse - if true then evaluate the predicate recursively on all threadgroups in all subgroups of the given group
      predicate - the predicate
      Returns:
      An unmodifiable Collection of active threadgroups which match the given predicate and which is a subgroup of the given thread group
      Throws:
      IllegalArgumentException - if the given group or predicate is null
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadGroups

      public static Collection<ThreadGroup> findThreadGroups(ThreadUtils.ThreadGroupPredicate predicate)
      Select all active threadgroups which match the given predicate.
      Parameters:
      predicate - the predicate
      Returns:
      An unmodifiable Collection of active threadgroups matching the given predicate
      Throws:
      IllegalArgumentException - if the predicate is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadGroupsByName

      public static Collection<ThreadGroup> findThreadGroupsByName(String threadGroupName)
      Finds active thread groups with the specified group name.
      Parameters:
      threadGroupName - The thread group name
      Returns:
      the thread groups with the specified group name or an empty collection if no such thread group exists. The collection returned is always unmodifiable.
      Throws:
      IllegalArgumentException - if group name is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreads

      public static Collection<Thread> findThreads(ThreadGroup group, boolean recurse, ThreadUtils.ThreadPredicate predicate)
      Select all active threads which match the given predicate and which belongs to the given thread group (or one of its subgroups).
      Parameters:
      group - the thread group
      recurse - if true then evaluate the predicate recursively on all threads in all subgroups of the given group
      predicate - the predicate
      Returns:
      An unmodifiable Collection of active threads which match the given predicate and which belongs to the given thread group
      Throws:
      IllegalArgumentException - if the given group or predicate is null
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreads

      public static Collection<Thread> findThreads(ThreadUtils.ThreadPredicate predicate)
      Select all active threads which match the given predicate.
      Parameters:
      predicate - the predicate
      Returns:
      An unmodifiable Collection of active threads matching the given predicate
      Throws:
      IllegalArgumentException - if the predicate is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadsByName

      public static Collection<Thread> findThreadsByName(String threadName)
      Finds active threads with the specified name.
      Parameters:
      threadName - The thread name
      Returns:
      The threads with the specified name or an empty collection if no such thread exists. The collection returned is always unmodifiable.
      Throws:
      IllegalArgumentException - if the specified name is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadsByName

      public static Collection<Thread> findThreadsByName(String threadName, String threadGroupName)
      Finds active threads with the specified name if they belong to a thread group with the specified group name.
      Parameters:
      threadName - The thread name
      threadGroupName - The thread group name
      Returns:
      The threads which belongs to a thread group with the specified group name and the thread's name match the specified name, An empty collection is returned if no such thread exists. The collection returned is always unmodifiable.
      Throws:
      IllegalArgumentException - if the specified thread name or group name is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • findThreadsByName

      public static Collection<Thread> findThreadsByName(String threadName, ThreadGroup threadGroup)
      Finds active threads with the specified name if they belong to a specified thread group.
      Parameters:
      threadName - The thread name
      threadGroup - The thread group
      Returns:
      The threads which belongs to a thread group and the thread's name match the specified name, An empty collection is returned if no such thread exists. The collection returned is always unmodifiable.
      Throws:
      IllegalArgumentException - if the specified thread name or group is null
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • getAllThreadGroups

      public static Collection<ThreadGroup> getAllThreadGroups()
      Gets all active thread groups excluding the system thread group (A thread group is active if it has been not destroyed).
      Returns:
      all thread groups excluding the system thread group. The collection returned is always unmodifiable.
      Throws:
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • getAllThreads

      public static Collection<Thread> getAllThreads()
      Gets all active threads (A thread is active if it has been started and has not yet died).
      Returns:
      all active threads. The collection returned is always unmodifiable.
      Throws:
      SecurityException - if the current thread cannot access the system thread group
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • getSystemThreadGroup

      public static ThreadGroup getSystemThreadGroup()
      Gets the system thread group (sometimes also referred as "root thread group").
      Returns:
      the system thread group
      Throws:
      SecurityException - if the current thread cannot modify thread groups from this thread's thread group up to the system thread group
    • join

      public static void join(Thread thread, Duration duration) throws InterruptedException
      Waits for the given thread to die for the given duration. Implemented using Thread.join(long, int).
      Parameters:
      thread - The thread to join.
      duration - How long to wait.
      Throws:
      InterruptedException - if any thread has interrupted the current thread.
      Since:
      3.12.0
      See Also:
    • sleep

      public static void sleep(Duration duration) throws InterruptedException
      Sleeps the current thread for the given duration. Implemented using Thread.sleep(long, int).
      Parameters:
      duration - How long to sleep.
      Throws:
      InterruptedException - if any thread has interrupted the current thread.
      Since:
      3.12.0
      See Also: