Package org.apache.commons.io
Class ThreadMonitor
java.lang.Object
org.apache.commons.io.ThreadMonitor
- All Implemented Interfaces:
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.
long timeoutInMillis = 1000; try { Thread monitor = ThreadMonitor.start(timeoutInMillis); // do some work here ThreadMonitor.stop(monitor); } catch (InterruptedException e) { // timed amount was reached }
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ThreadMonitor
(Thread thread, long timeout) Construct and new monitor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
run()
Sleep until the specified timeout amount and then interrupt the thread being monitored.private static void
sleep
(long ms) Sleep for a guaranteed minimum number of milliseconds unless interrupted.static Thread
start
(long timeout) Start monitoring the current thread.static Thread
Start monitoring the specified thread.static void
Stop monitoring the specified thread.
-
Field Details
-
thread
-
timeout
private final long timeout
-
-
Constructor Details
-
ThreadMonitor
Construct and new monitor.- Parameters:
thread
- The thread to monitortimeout
- The timeout amount in milliseconds
-
-
Method Details
-
start
Start monitoring the current thread.- Parameters:
timeout
- The timeout amount in milliseconds 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
Start monitoring the specified thread.- Parameters:
thread
- The thread The thread to monitortimeout
- The timeout amount in milliseconds 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
Stop monitoring the specified thread.- Parameters:
thread
- The monitor thread, may benull
-
run
public void run()Sleep until the specified timeout amount and then interrupt the thread being monitored. -
sleep
Sleep for a guaranteed minimum number of milliseconds unless interrupted. This method exists because Thread.sleep(100) can sleep for 0, 70, 100 or 200ms or anything else it deems appropriate. Read the docs on Thread.sleep for further interesting details.- Parameters:
ms
- the number of milliseconds to sleep for- Throws:
InterruptedException
- if interrupted
-