ExecutorCompletionService Kelas
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.
CompletionService Yang menggunakan yang disediakan Executor untuk menjalankan tugas.
[Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class ExecutorCompletionService : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.ICompletionService
[<Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type ExecutorCompletionService = class
inherit Object
interface ICompletionService
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Warisan
- Atribut
- Penerapan
Keterangan
CompletionService Yang menggunakan yang disediakan Executor untuk menjalankan tugas. Kelas ini mengatur bahwa tugas yang dikirimkan adalah, setelah selesai, ditempatkan pada antrean yang dapat diakses menggunakan take. Kelas ini cukup ringan agar cocok untuk penggunaan sementara saat memproses grup tugas.
<Contoh Penggunaan b>.</b>
Misalkan Anda memiliki sekumpulan pemecah untuk masalah tertentu, masing-masing mengembalikan nilai dari beberapa jenis Result, dan ingin menjalankannya secara bersamaan, memproses hasil masing-masing yang mengembalikan nilai non-null, dalam beberapa metode use(Result r). Anda dapat menulis ini sebagai:
{@code
void solve(Executor e,
Collection<Callable<Result>> solvers)
throws InterruptedException, ExecutionException {
CompletionService<Result> cs
= new ExecutorCompletionService<>(e);
solvers.forEach(cs::submit);
for (int i = solvers.size(); i > 0; i--) {
Result r = cs.take().get();
if (r != null)
use(r);
}
}}
Misalkan Anda ingin menggunakan hasil non-null pertama dari kumpulan tugas, mengabaikan apa pun yang mengalami pengecualian, dan membatalkan semua tugas lain ketika yang pertama siap:
{@code
void solve(Executor e,
Collection<Callable<Result>> solvers)
throws InterruptedException {
CompletionService<Result> cs
= new ExecutorCompletionService<>(e);
int n = solvers.size();
List<Future<Result>> futures = new ArrayList<>(n);
Result result = null;
try {
solvers.forEach(solver -> futures.add(cs.submit(solver)));
for (int i = n; i > 0; i--) {
try {
Result r = cs.take().get();
if (r != null) {
result = r;
break;
}
} catch (ExecutionException ignore) {}
}
} finally {
futures.forEach(future -> future.cancel(true));
}
if (result != null)
use(result);
}}
Ditambahkan dalam 1.5.
Dokumentasi Java untuk java.util.concurrent.ExecutorCompletionService.
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.
Konstruktor
| ExecutorCompletionService(IExecutor) |
Membuat ExecutorCompletionService menggunakan eksekutor yang disediakan untuk eksekusi tugas dasar dan |
| ExecutorCompletionService(IExecutor, IBlockingQueue) |
Membuat ExecutorCompletionService menggunakan eksekutor yang disediakan untuk eksekusi tugas dasar dan antrean yang disediakan sebagai antrean penyelesaiannya. |
| ExecutorCompletionService(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
Properti
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| JniIdentityHashCode |
|
| JniPeerMembers |
|
| PeerReference |
|
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
Metode
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| Dispose() |
|
| Dispose(Boolean) |
|
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| Poll() |
Mengambil dan menghapus Masa Depan yang mewakili tugas berikutnya yang selesai, atau |
| Poll(Int64, TimeUnit) |
Mengambil dan menghapus Future yang mewakili tugas berikutnya yang selesai, menunggu jika perlu hingga waktu tunggu yang ditentukan jika belum ada. |
| PollAsync() |
|
| PollAsync(Int64, TimeUnit) |
|
| SetHandle(IntPtr, JniHandleOwnership) |
Handle Mengatur properti. (Diperoleh dari Object) |
| Submit(ICallable) |
|
| Submit(IRunnable, Object) |
|
| Take() |
Mengambil dan menghapus Future yang mewakili tugas berikutnya yang selesai, menunggu apakah belum ada. |
| TakeAsync() |
|
| ToArray<T>() |
|
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
|
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.DisposeUnlessReferenced() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniManagedPeerState |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
Metode Ekstensi
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android. |
| JavaCast<TResult>(IJavaObject) |
|
| GetJniTypeName(IJavaPeerable) |
|