У меня есть приложение, которое регулярно отправляет задачи для выполнения в выделенном потоке. Этими задачами являются FutureTask<V>
, а поток - не более чем бесконечный цикл, который выполняет задания, когда они попадают в очередь, переходя в спящий режим, если он пуст.
Иногда мне нужно дождаться результата вычисления, поэтому я вызываю метод get () FutureTask, который также выдаст исключение, если произойдет что-то плохое. Но бывают случаи, когда мне все равно, каков был результат, если он есть, но мне нужно знать (журнал, printStackTrace () или что-то еще ...), произошел ли какой-то сбой во время выполнения задачи.
Есть ли способ добиться этого, не дожидаясь вызова get (), который мне не нужен?
Заранее спасибо!
ОБНОВЛЕНИЕ: вызов get () в потоке runner после выполнения задачи казался единственным способом перехватить исключение, если никто другой не ожидал результата.
Другим решением могло бы стать расширение класса FutureTask для предоставления метода, который через отражение java предоставляет частное поле sync.exception.