ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Metodo richiamato al completamento dell'esecuzione dell'oggetto Runnable specificato.
[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
Parametri
runnable completato
eccezione che ha causato la terminazione o null se l'esecuzione è stata completata normalmente
- Attributi
Commenti
Metodo richiamato al completamento dell'esecuzione dell'oggetto Runnable specificato. Questo metodo viene richiamato dal thread che ha eseguito l'attività. Se non null, Throwable è l'errore non rilevato RuntimeException
o Error
che ha causato l'interruzione brusca dell'esecuzione.
Questa implementazione non esegue alcuna operazione, ma può essere personalizzata nelle sottoclassi. Nota: per annidare correttamente più sostituzioni, le sottoclassi devono in genere richiamare super.afterExecute
all'inizio di questo metodo.
<b Nota:</b>> Quando le azioni sono racchiuse in attività (ad esempio FutureTask
) in modo esplicito o tramite metodi come submit
, questi oggetti attività intercettano e mantengono eccezioni di calcolo e quindi non causano interruzioni improvvise e le eccezioni interne sono <em>not</em> passate a questo metodo. Se si desidera intercettare entrambi i tipi di errori in questo metodo, è possibile eseguire ulteriori probe per tali casi, come in questa sottoclasse di esempio che stampa la causa diretta o l'eccezione sottostante se un'attività è stata interrotta:
{@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);
}
}}
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.