Compartir a través de


ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Método

Definición

Método invocado tras la finalización de la ejecución del runnable especificado.

[Android.Runtime.Register("afterExecute", "(Ljava/lang/Runnable;Ljava/lang/Throwable;)V", "GetAfterExecute_Ljava_lang_Runnable_Ljava_lang_Throwable_Handler")]
protected virtual void AfterExecute (Java.Lang.IRunnable? r, Java.Lang.Throwable? t);
[<Android.Runtime.Register("afterExecute", "(Ljava/lang/Runnable;Ljava/lang/Throwable;)V", "GetAfterExecute_Ljava_lang_Runnable_Ljava_lang_Throwable_Handler")>]
abstract member AfterExecute : Java.Lang.IRunnable * Java.Lang.Throwable -> unit
override this.AfterExecute : Java.Lang.IRunnable * Java.Lang.Throwable -> unit

Parámetros

r
IRunnable

que se puede ejecutar que se ha completado

t
Throwable

excepción que provocó la terminación o null si la ejecución se completó normalmente.

Atributos

Comentarios

Método invocado tras la finalización de la ejecución del runnable especificado. El subproceso invoca este método que ejecutó la tarea. Si no es null, Throwable es el no detectado RuntimeException o Error que provocó que la ejecución finalizara abruptamente.

Esta implementación no hace nada, pero puede personalizarse en subclases. Nota: Para anidar correctamente varias invalidaciones, las subclases generalmente deben invocar super.afterExecute al principio de este método.

<b>Nota:</b> Cuando las acciones se incluyen en tareas (como FutureTask) explícitamente o a través de métodos como submit, estos objetos de tarea detectan y mantienen excepciones computacionales, por lo que no provocan una terminación abrupta y las excepciones internas se><><pasan a este método. Si desea interceptar ambos tipos de errores en este método, puede sondear aún más estos casos, como en esta subclase de ejemplo que imprime la causa directa o la excepción subyacente si se ha anulado una tarea:

{@code
            class ExtendedExecutor extends ThreadPoolExecutor {
              // ...
              protected void afterExecute(Runnable r, Throwable t) {
                super.afterExecute(r, t);
                if (t == null
                    && r instanceof Future<?>
                    && ((Future<?>)r).isDone()) {
                  try {
                    Object result = ((Future<?>) r).get();
                  } catch (CancellationException ce) {
                    t = ce;
                  } catch (ExecutionException ee) {
                    t = ee.getCause();
                  } catch (InterruptedException ie) {
                    // ignore/reset
                    Thread.currentThread().interrupt();
                  }
                }
                if (t != null)
                  System.out.println(t);
              }
            }}

Documentación de Java para java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a