ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 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
매개 변수
완료된 실행 가능
종료를 발생시킨 예외이거나 실행이 정상적으로 완료된 경우 null입니다.
- 특성
설명
지정된 Runnable의 실행이 완료될 때 호출되는 메서드입니다. 이 메서드는 태스크를 실행한 스레드에서 호출됩니다. null이 아니면 Throwable이 catch RuntimeException
Error
되지 않거나 실행이 갑자기 종료됩니다.
이 구현은 아무 작업도 수행하지 않지만 서브클래스로 사용자 지정할 수 있습니다. 참고: 여러 재정의를 올바르게 중첩하려면 일반적으로 이 메서드의 시작 부분에서 서브클래스가 호출 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);
}
}}
이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.