Как я могу знать, как задача закончилась при использовании класса Future Java - PullRequest
5 голосов
/ 12 июля 2011

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

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

Ответы [ 3 ]

6 голосов
/ 12 июля 2011

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

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

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

0 голосов
/ 12 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...