public static void execute(Thread task,
long timeout) throws TimeoutController.TimeoutException {
task.start();
try {
task.join(timeout);
} catch (InterruptedException e) {
/* if somebody interrupts us he knows what he is doing */
}
if (task.isAlive()) {
task.interrupt();
throw new TimeoutException();
}
}
Executes task. Waits for timeout
milliseconds for the task to end and returns. If the task does not return
in time, the thread is interrupted and an Exception is thrown.
The caller should override the Thread.interrupt() method to something that
quickly makes the thread die or use Thread.isInterrupted(). |