2011-07-12 20 views
5

Estoy usando la clase Future de Java para ejecutar una tarea, pero el método isDone devuelve verdadero si la tarea se completó. La finalización puede deberse a una terminación normal, una excepción o cancelación: en todos estos casos, este método será verdadero.cómo puedo saber cómo terminó una tarea al usar la clase Future de Java

¿Hay alguna manera de saber si terminó debido a una excepción o porque finalizó correctamente?

Respuesta

2

Simplemente puede intentar recuperar el valor - el método get arroja una excepción o devuelve el valor.

6

Cuando se llama método Future.get(), hay 4 posibles resultados:

  • se obtiene el valor resultado
  • Usted recibe CancellationException - si el cálculo se canceló (por ejemplo Future.cancel (verdaderos) se llama)
  • se obtiene ExecutionException - si el cómputo inició una excepción
  • se obtiene InterruptedException - si el hilo actual fue interrumpida a la espera (por ejemplo executor.shutdownNow() se llama)
+0

que tienes razón, este es un enfoque mucho más mejor. +1 –

+0

¿Cómo averiguamos si un hilo ejecuta un Runnable o un Callable? ¿Future proporciona esa información? – Abidi

0

lo he utilizado en mi código y la única forma en que puedo averiguar si la tarea realmente completado con éxito es mediante el uso de get()

Cuestiones relacionadas