Поделиться через


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, то метод Throwable является неухваченным RuntimeException или Error что вызвало резкое завершение выполнения.

Эта реализация ничего не делает, но может быть настроена в подклассах. Примечание. Чтобы правильно вложить несколько переопределения, подклассы должны обычно вызываться super.afterExecute в начале этого метода.

<b Примечание.</b>> Если действия заключены в задачи (напримерFutureTask) явным образом или с помощью методов, таких какsubmit, эти объекты задач перехватывают и поддерживают вычислительные исключения, поэтому они не вызывают резкого завершения, а внутренние исключения не>< передаются>< в этот метод. Если вы хотите захватить оба типа сбоев в этом методе, можно выполнить дополнительную проверку для таких случаев, как в этом примере подкласса, который печатает либо прямую причину, либо базовое исключение, если задача была прервана:

{@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 для java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к