Class ThreadMonitor

java.lang.Object
org.apache.commons.io.ThreadMonitor
All Implemented Interfaces:
Runnable

final class ThreadMonitor extends Object implements Runnable
Monitors a thread, interrupting it if it reaches the specified timeout.

This works by sleeping until the specified timeout amount and then interrupting the thread being monitored. If the thread being monitored completes its work before being interrupted, it should interrupt() the monitor thread.

 Duration timeout = Duration.ofSeconds(1);
 try {
     Thread monitor = ThreadMonitor.start(timeout);
     // do some work here
     ThreadMonitor.stop(monitor);
 } catch (InterruptedException e) {
     // timed amount was reached
 }
 
  • Field Details

    • thread

      private final Thread thread
    • timeout

      private final Duration timeout
  • Constructor Details

    • ThreadMonitor

      private ThreadMonitor(Thread thread, Duration timeout)
      Constructs a new monitor.
      Parameters:
      thread - The thread to monitor.
      timeout - The timeout amount.
  • Method Details

    • start

      static Thread start(Duration timeout)
      Starts monitoring the current thread.
      Parameters:
      timeout - The timeout amount. or no timeout if the value is zero or less.
      Returns:
      The monitor thread or null if the timeout amount is not greater than zero.
    • start

      static Thread start(Thread thread, Duration timeout)
      Starts monitoring the specified thread.
      Parameters:
      thread - The thread to monitor
      timeout - The timeout amount. or no timeout if the value is zero or less.
      Returns:
      The monitor thread or null if the timeout amount is not greater than zero.
    • stop

      static void stop(Thread thread)
      Stops monitoring the specified thread.
      Parameters:
      thread - The monitor thread, may be null.
    • run

      public void run()
      Sleeps until the specified timeout amount and then interrupt the thread being monitored.
      Specified by:
      run in interface Runnable
      See Also: