Po co ustawić bit przerwań w Callable

Więc ten zasób (http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html) sugeruje ustawienie bitu przerwania w wątku, gdy wątek nie obsługuje samego przerwania,aby kod znajdujący się wyżej na stosie wywołań mógł dowiedzieć się o przerwie i odpowiedzieć na nią, jeśli chce. ”

Powiedzmy, że używam ExecutorService do uruchomienia czegoś w innym wątku. Konstruuję Callable i przekazuję ten Callable do ExecutorService.submit (), który zwraca Future. Jeśli Callable zostanie przerwany, a następnie zresetuje bit przerwania, powiązana Future nie wyśle ​​wyjątku InterruptedException, gdy zostanie wywołany Future.get (). Więc jaki byłby cel ustawienia przerywanego bitu w Callable, jeśli ta przyszłość jest jedynym sposobem, w jaki główny wątek ma dostęp do utworzonego wątku.

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?

questionAnswers(2)

yourAnswerToTheQuestion