IExecutor Antarmuka

Definisi

Objek yang menjalankan tugas yang dikirimkan Runnable .

[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Turunan
Atribut
Penerapan

Keterangan

Objek yang menjalankan tugas yang dikirimkan Runnable . Antarmuka ini menyediakan cara memisahkan pengiriman tugas dari mekanisme bagaimana setiap tugas akan dijalankan, termasuk detail penggunaan utas, penjadwalan, dll. Biasanya Executor digunakan alih-alih membuat utas secara eksplisit. Misalnya, daripada memanggil new Thread(new RunnableTask()).start() untuk setiap set tugas, Anda dapat menggunakan:

{@code
            Executor executor = anExecutor();
            executor.execute(new RunnableTask1());
            executor.execute(new RunnableTask2());
            ...}

Namun, Executor antarmuka tidak secara ketat mengharuskan eksekusi menjadi asinkron. Dalam kasus paling sederhana, pelaksana dapat menjalankan tugas yang dikirimkan segera di utas pemanggil:

{@code
            class DirectExecutor implements Executor {
              public void execute(Runnable r) {
                r.run();
              }
            }}

Lebih biasanya, tugas dijalankan di beberapa utas selain utas pemanggil. Pelaksana di bawah ini menelurkan utas baru untuk setiap tugas.

{@code
            class ThreadPerTaskExecutor implements Executor {
              public void execute(Runnable r) {
                new Thread(r).start();
              }
            }}

Banyak Executor implementasi memberlakukan semacam batasan tentang bagaimana dan kapan tugas dijadwalkan. Pelaksana di bawah ini menserialisasikan pengiriman tugas ke pelaksana kedua, yang mengilustrasikan pelaksana komposit.

{@code
            class SerialExecutor implements Executor {
              final Queue<Runnable> tasks = new ArrayDeque<>();
              final Executor executor;
              Runnable active;

              SerialExecutor(Executor executor) {
                this.executor = executor;
              }

              public synchronized void execute(Runnable r) {
                tasks.add(() -> {
                  try {
                    r.run();
                  } finally {
                    scheduleNext();
                  }
                });
                if (active == null) {
                  scheduleNext();
                }
              }

              protected synchronized void scheduleNext() {
                if ((active = tasks.poll()) != null) {
                  executor.execute(active);
                }
              }
            }}

Implementasi Executor yang disediakan dalam paket ini mengimplementasikan ExecutorService, yang merupakan antarmuka yang lebih luas. Kelas ini ThreadPoolExecutor menyediakan implementasi kumpulan utas yang dapat diperluas. Kelas ini Executors menyediakan metode pabrik yang nyaman untuk Pelaksana ini.

Efek konsistensi memori: Tindakan dalam utas sebelum mengirimkan Runnable objek ke Executor<i>happen-before</i> eksekusinya dimulai, mungkin di utas lain.

Ditambahkan dalam 1.5.

Dokumentasi Java untuk java.util.concurrent.Executor.

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.

Properti

Nama Deskripsi
Handle

Mendapatkan nilai JNI dari objek Android yang mendasar.

(Diperoleh dari IJavaObject)
JniIdentityHashCode

Mengembalikan nilai java.lang.System.identityHashCode() untuk instans yang dibungkus.

(Diperoleh dari IJavaPeerable)
JniManagedPeerState

Status serekan terkelola.

(Diperoleh dari IJavaPeerable)
JniPeerMembers

Akses anggota dan dukungan pemanggilan.

(Diperoleh dari IJavaPeerable)
PeerReference

Mengembalikan instans objek Java yang dibungkusJniObjectReference.

(Diperoleh dari IJavaPeerable)

Metode

Nama Deskripsi
Disposed()

Dipanggil ketika instans telah dibuang.

(Diperoleh dari IJavaPeerable)
DisposeUnlessReferenced()

Jika tidak ada referensi yang luar biasa untuk instans ini, maka panggilan Dispose(); jika tidak, tidak melakukan apa pun.

(Diperoleh dari IJavaPeerable)
Execute(IRunnable)

Menjalankan perintah yang diberikan pada beberapa waktu di masa mendatang.

Finalized()

Dipanggil ketika instans telah diselesaikan.

(Diperoleh dari IJavaPeerable)
SetJniIdentityHashCode(Int32)

Atur nilai yang dikembalikan oleh JniIdentityHashCode.

(Diperoleh dari IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Objek yang menjalankan tugas yang dikirimkan Runnable .

(Diperoleh dari IJavaPeerable)
SetPeerReference(JniObjectReference)

Atur nilai yang dikembalikan oleh PeerReference.

(Diperoleh dari IJavaPeerable)
UnregisterFromRuntime()

Batalkan pendaftaran instans ini sehingga runtime tidak akan mengembalikannya dari pemanggilan di masa mendatang Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Diperoleh dari IJavaPeerable)

Metode Ekstensi

Nama Deskripsi
GetJniTypeName(IJavaPeerable)

Mendapatkan nama JNI dari jenis instans self.

JavaAs<TResult>(IJavaPeerable)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Android.

JavaCast<TResult>(IJavaObject)

Objek yang menjalankan tugas yang dikirimkan Runnable .

TryJavaCast<TResult>(IJavaPeerable, TResult)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

Berlaku untuk