ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
que se puede ejecutar que se ha completado
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);
}
}}
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.