все, мой английский плохой, но я постараюсь лучше всего объяснить свой вопрос.Java Concurrency in Practice Lising7.9
код следующим образом:
public class timedRun {
private static final ScheduledExecutorService cancelExec = newScheduledThreadPool(1);
public static void timedRun(final Runnable r,
long timeout, TimeUnit unit)
throws InterruptedException {
class RethrowableTask implements Runnable {
private volatile Throwable t;
public void run() {
try {
r.run();
} catch (Throwable t) {
this.t = t;
}
}
void rethrow() {
if (t != null)
throw launderThrowable(t);
}
}
RethrowableTask task = new RethrowableTask();
final Thread taskThread = new Thread(task);
taskThread.start();
cancelExec.schedule(new Runnable() {
public void run() {
taskThread.interrupt();
}
}, timeout, unit);
taskThread.join(unit.toMillis(timeout));
task.rethrow();
}
}
Существует утверждение в книге: Даже если задача не отвечает на ответные меры, приуроченный метод запуска все еще может вернуться к своему абоненту.
Мой вопрос: Если я называю этот метод следующим образом:.
timedRun(new Runnable() {
@Override
public void run() {
while(true);
}
}, /* doesn't matter */, /* doesn't matter */);
Если г не отвечает на запрос прерывания, то taskThread не может быть прервана в этом коде (я прав?) Значит, эта программа, возможно, не реализовала funtionality timed run?