org.apache.commons.io
Class ThreadMonitor

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

 class ThreadMonitor
extends java.lang.Object
implements java.lang.Runnable

Monitors a thread, interrupting it of it reaches the specified timout.

This works by sleeping until the specified timout 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.

       long timeoutInMillis = 1000;
       try {
           Thread monitor = ThreadMonitor.start(timeoutInMillis);
           // do some work here
           ThreadMonitor.stop(monitor);
       } catch (InterruptedException e) {
           // timed amount was reached
       }
 

Version:
$Id: ThreadMonitor.java 1002689 2010-09-29 15:43:48Z niallp $

Field Summary
private  java.lang.Thread thread
           
private  long timeout
           
 
Constructor Summary
private ThreadMonitor(java.lang.Thread thread, long timeout)
          Construct and new monitor.
 
Method Summary
 void run()
          Sleep until the specified timout amount and then interrupt the thread being monitored.
static java.lang.Thread start(long timeout)
          Start monitoring the current thread.
static java.lang.Thread start(java.lang.Thread thread, long timeout)
          Start monitoring the specified thread.
static void stop(java.lang.Thread thread)
          Stop monitoring the specified thread.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

thread

private final java.lang.Thread thread

timeout

private final long timeout
Constructor Detail

ThreadMonitor

private ThreadMonitor(java.lang.Thread thread,
                      long timeout)
Construct and new monitor.

Parameters:
thread - The thread to monitor
timeout - The timout amount in milliseconds
Method Detail

start

public static java.lang.Thread start(long timeout)
Start monitoring the current thread.

Parameters:
timeout - The timout amount in milliseconds or no timeout if the value is zero or less
Returns:
The monitor thread or null if the timout amount is not greater than zero

start

public static java.lang.Thread start(java.lang.Thread thread,
                                     long timeout)
Start monitoring the specified thread.

Parameters:
thread - The thread The thread to monitor
timeout - The timout amount in milliseconds or no timeout if the value is zero or less
Returns:
The monitor thread or null if the timout amount is not greater than zero

stop

public static void stop(java.lang.Thread thread)
Stop monitoring the specified thread.

Parameters:
thread - The monitor thread, may be null

run

public void run()
Sleep until the specified timout amount and then interrupt the thread being monitored.

Specified by:
run in interface java.lang.Runnable
See Also:
Runnable.run()


Copyright (c) 2002-2011 Apache Software Foundation