다음을 통해 공유


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이 catch RuntimeExceptionError 되지 않거나 실행이 갑자기 종료됩니다.

이 구현은 아무 작업도 수행하지 않지만 서브클래스로 사용자 지정할 수 있습니다. 참고: 여러 재정의를 올바르게 중첩하려면 일반적으로 이 메서드의 시작 부분에서 서브클래스가 호출 super.afterExecute 되어야 합니다.

<b>참고:</b> 작업을 명시적으로 또는 메서드(예: 메서드submit)로 FutureTask묶은 경우 이러한 작업 개체는 계산 예외를 catch 및 유지 관리하므로 갑작스러운 종료가 발생하지 않으며 내부 예외가 <>이 메서드에 전달되지 않습니다<>. 이 메서드에서 두 종류의 오류를 모두 트래핑하려는 경우 작업이 중단된 경우 직접 원인 또는 기본 예외를 출력하는 이 샘플 하위 클래스에서와 같이 이러한 경우를 추가로 검색할 수 있습니다.

{@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 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상