Как я могу знать, как задача завершилась при использовании класса Future Java

Я использую Java-класс Future для выполнения задачи, но метод isDone возвращает true, если задача выполнена. Завершение может быть связано с обычным завершением, исключением или отменой - во всех этих случаях этот метод вернет true.

Есть ли способ узнать, закончилось ли оно из-за исключения или потому, что оно успешно завершилось?

3 ответа

Когда вы вызываете метод Future.get(), есть 4 возможных результата:

  • Вы получаете значение результата
  • Вы получаете CancellationException - если вычисление было отменено (например, вызывается Future.cancel(true))
  • Вы получаете ExecutionException - если вычисление бросило исключение
  • Вы получаете InterruptedException - если текущий поток был прерван во время ожидания (например, вызывается executor.shutdownNow())

Вы можете просто попытаться получить значение - get Затем метод либо генерирует исключение, либо возвращает значение.

Я использовал его в своем коде, и единственный способ определить, действительно ли задача успешно выполнена, - это использовать get()

Другие вопросы по тегам