ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) 方法

定义

在给定 Runnable 执行完成后调用的方法。

[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

参数

r
IRunnable

已完成的可运行项

t
Throwable

导致终止的异常;如果执行正常完成,则为 null

属性

注解

在给定 Runnable 执行完成后调用的方法。 此方法由执行任务的线程调用。 如果为非 null,则引发是未捕获 RuntimeException 的,或者 Error 导致执行突然终止。

此实现不执行任何操作,但可以在子类中自定义。 注意:若要正确嵌套多个重写,子类通常应在此方法的开头调用 super.afterExecute

<b>注意:</b> 当操作被显式或通过诸如这些任务对象捕获和维护计算异常等submit方法中FutureTask时,它们不会导致突然终止,并且内部异常<>不是</em> 传递给此方法。 如果要在此方法中捕获这两种类型的失败,可以进一步调查此类情况,如此示例子类中所示,如果任务已中止,则打印直接原因或基础异常:

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

适用于 . 的 java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于