class ThreadMonitor
extends java.lang.Object
implements java.lang.Runnable
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 }
Modifier and Type | Field and Description |
---|---|
private java.lang.Thread |
thread |
private java.time.Duration |
timeout |
Modifier | Constructor and Description |
---|---|
private |
ThreadMonitor(java.lang.Thread thread,
java.time.Duration timeout)
Constructs a new monitor.
|
Modifier and Type | Method and Description |
---|---|
void |
run()
Sleep until the specified timeout amount and then
interrupt the thread being monitored.
|
private static void |
sleep(java.time.Duration duration)
Sleeps for a guaranteed minimum duration unless interrupted.
|
(package private) static java.lang.Thread |
start(java.time.Duration timeout)
Start monitoring the current thread.
|
(package private) static java.lang.Thread |
start(java.lang.Thread thread,
java.time.Duration timeout)
Start monitoring the specified thread.
|
(package private) static void |
stop(java.lang.Thread thread)
Stop monitoring the specified thread.
|
private final java.lang.Thread thread
private final java.time.Duration timeout
private ThreadMonitor(java.lang.Thread thread, java.time.Duration timeout)
thread
- The thread to monitortimeout
- The timeout amount in millisecondsstatic java.lang.Thread start(java.time.Duration timeout)
timeout
- The timeout amount in milliseconds
or no timeout if the value is zero or lessnull
if the timeout amount is not greater than zerostatic java.lang.Thread start(java.lang.Thread thread, java.time.Duration timeout)
thread
- The thread The thread to monitortimeout
- The timeout amount in milliseconds
or no timeout if the value is zero or lessnull
if the timeout amount is not greater than zerostatic void stop(java.lang.Thread thread)
thread
- The monitor thread, may be null
public void run()
run
in interface java.lang.Runnable
Runnable.run()
private static void sleep(java.time.Duration duration) throws java.lang.InterruptedException
duration
- the sleep duration.java.lang.InterruptedException
- if interrupted