Итак, этот ресурс (http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html) предлагает установить бит прерывания в потоке, когда этот поток не имеет дело с самим прерыванием: «, чтобы код выше в стеке вызовов мог узнайте о прерывании и ответьте на него, если он захочет. "Зачем устанавливать бит прерывания в Callable
Предположим, что я использую ExecutorService для запуска чего-то другого потока. Я создаю Callable и передаю этот Callable в ExecutorService.submit(), который возвращает будущее. Если Callable прерывается и затем сбрасывает бит прерывания, связанное с ним Future не будет вызывать InterruptedException при вызове Future.get(). Итак, какова была бы цель установки прерванного бита в Callable, если это будущее - единственный способ, которым главный поток имеет доступ к порожденной теме.
class MyCallable implements Callable<String> {
@Override
public String call() {
while (!Thread.currentThread().isInterrupted()) {
}
Thread.currentThread().interrupt();
return "blah";
}
}
ExecutorService pool = makeService();
Future<String> future = pool.submit(new MyCallable());
// Callable gets interrupted and the Callable resets the interrupt bit.
future.get(); // Does not thrown an InterruptedException, so how will I ever know that the Callable was interrupted?