Bagikan melalui


ThreadPoolExecutor.AfterExecute(IRunnable, Throwable) Metode

Definisi

Metode yang dipanggil setelah selesai menjalankan Runnable yang diberikan.

[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

Parameter

r
IRunnable

runnable yang telah selesai

t
Throwable

pengecualian yang menyebabkan penghentian, atau null jika eksekusi selesai secara normal

Atribut

Keterangan

Metode yang dipanggil setelah selesai menjalankan Runnable yang diberikan. Metode ini dipanggil oleh utas yang menjalankan tugas. Jika non-null, Yang Dapat Dilemparkan adalah yang tidak diajarkan RuntimeException atau Error yang menyebabkan eksekusi berakhir tiba-tiba.

Implementasi ini tidak melakukan apa pun, tetapi dapat disesuaikan dalam subkelas. Catatan: Untuk menumpuk beberapa penimpaan dengan benar, subkelas umumnya harus dipanggil super.afterExecute di awal metode ini.

<b>Catatan:</b> Ketika tindakan diapit dalam tugas (seperti FutureTask) baik secara eksplisit atau melalui metode seperti submit, objek tugas ini menangkap dan mempertahankan pengecualian komputasi, sehingga tidak menyebabkan penghentian mendadak, dan pengecualian <internal tidak>< diteruskan> ke metode ini. Jika Anda ingin menjebak kedua jenis kegagalan dalam metode ini, Anda dapat memeriksa lebih lanjut untuk kasus seperti itu, seperti dalam subkelas sampel ini yang mencetak penyebab langsung atau pengecualian yang mendasar jika tugas telah dibatalkan:

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

Dokumentasi Java untuk java.util.concurrent.ThreadPoolExecutor.afterExecute(java.lang.Runnable, java.lang.Throwable).

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.

Berlaku untuk