Compartilhar via


ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Método

Definição

Método invocado após a conclusão da execução do Runnable fornecido.

[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

o executável que foi concluído

t
Throwable

a exceção que causou o término ou nula se a execução for concluída normalmente

Atributos

Comentários

Método invocado após a conclusão da execução do Runnable fornecido. Esse método é chamado pelo thread que executou a tarefa. Se não for nulo, o Throwable é o não capturado RuntimeException ou Error que fez com que a execução terminasse abruptamente.

Essa implementação não faz nada, mas pode ser personalizada em subclasses. Nota: Para aninhar corretamente várias substituições, as subclasses geralmente devem ser invocadas super.afterExecute no início deste método.

<b>Nota:</b> Quando as ações são incluídas em tarefas (como FutureTask) explicitamente ou por meio de métodos como submit, esses objetos de tarefa capturam e mantêm exceções computacionais e, portanto, não causam terminação abrupta, e as exceções internas são <em>não</em> passadas para esse método. Se você quiser interceptar ambos os tipos de falhas nesse método, poderá investigar ainda mais esses casos, como nesta subclasse de exemplo que imprime a causa direta ou a exceção subjacente se uma tarefa tiver sido anulada:

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

Documentação Java para java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a