В этом примере кода вы дали
try {
executorService.invokeAll(tasks);
} catch (InterruptedException e) {
message = "interrupted";
Thread.currentThread().interrupt();
throw new InternalFailureException(message);
}
тот, кто вызывает Thread.currentThread().interrupt();
, установит флаг этого потока, в этом примере это будет поток, выполняющий ваш Controller#run()
метод.
В идеале с исполнителями ответственность за правильную обработку этого флага возлагается на Task
или Runnable
, который запланирован над исполнителем.
Поскольку это уже проверенное исключение - оно не даст вам возможности украсить задачу, которую вы собираетесь отправить внутри исполнителя, поэтому вы не можете легко ее контролировать.