IExecutor Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 |
| 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 |
| 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 |
| SetJniManagedPeerState(JniManagedPeerStates) |
Objek yang menjalankan tugas yang dikirimkan |
| SetPeerReference(JniObjectReference) |
Atur nilai yang dikembalikan oleh |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Objek yang menjalankan tugas yang dikirimkan |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |