語言

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

導致終止的例外,若執行正常則為空

屬性

備註

執行完成給定 Runnable 後會呼叫的方法。 此方法由執行任務的執行緒呼叫。 若非空,則可投擲物即為未被捕捉 RuntimeException 或 Error 導致執行突然終止的部分。

此實作不做任何實作,但可在子類別中自訂。 注意:為了正確巢狀多個覆寫,子類別通常應在此方法開始時呼叫 super.afterExecute 。

<b>註:</b> 當動作被包含在任務中(例如 FutureTask),無論是明確或透過方法如 submit,這些任務物件會捕捉並維護計算異常,因此不會造成突然終止,內部例外則是 <em>not</> 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 文件 java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於