Condividi tramite


ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Metodo

Definizione

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

r
IRunnable

runnable completato

t
Throwable

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);
              }
            }}

Documentazione java per java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable).

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.

Si applica a