ForkJoinPool.IManagedBlocker 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.
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam ForkJoinPools.
[Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")]
public interface ForkJoinPool.IManagedBlocker : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")>]
type ForkJoinPool.IManagedBlocker = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Atribut
- Penerapan
Keterangan
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam ForkJoinPools.
A ManagedBlocker menyediakan dua metode. Metode #isReleasable harus mengembalikan true jika pemblokiran tidak diperlukan. Metode #block memblokir utas saat ini jika perlu (mungkin dipanggil isReleasable secara internal sebelum benar-benar memblokir). Tindakan ini dilakukan oleh utas apa pun yang memanggil ForkJoinPool#managedBlock(ManagedBlocker). Metode yang tidak biasa dalam API ini mengakomodasi sinkronisasi yang mungkin, tetapi biasanya tidak, memblokir untuk jangka waktu yang lama. Demikian pula, mereka memungkinkan penanganan internal kasus yang lebih efisien di mana pekerja tambahan mungkin, tetapi biasanya tidak, diperlukan untuk memastikan paralelisme yang memadai. Menjelang akhir ini, implementasi metode isReleasable harus dapat diameni untuk pemanggilan berulang. Tidak ada metode yang dipanggil setelah pemanggilan isReleasable sebelumnya atau block mengembalikan true.
Misalnya, berikut adalah ManagedBlocker berdasarkan ReentrantLock:
{@code
class ManagedLocker implements ManagedBlocker {
final ReentrantLock lock;
boolean hasLock = false;
ManagedLocker(ReentrantLock lock) { this.lock = lock; }
public boolean block() {
if (!hasLock)
lock.lock();
return true;
}
public boolean isReleasable() {
return hasLock || (hasLock = lock.tryLock());
}
}}
Berikut adalah kelas yang mungkin memblokir menunggu item pada antrean tertentu:
{@code
class QueueTaker<E> implements ManagedBlocker {
final BlockingQueue<E> queue;
volatile E item = null;
QueueTaker(BlockingQueue<E> q) { this.queue = q; }
public boolean block() throws InterruptedException {
if (item == null)
item = queue.take();
return true;
}
public boolean isReleasable() {
return item != null || (item = queue.poll()) != null;
}
public E getItem() { // call after pool.managedBlock completes
return item;
}
}}
Dokumentasi Java untuk java.util.concurrent.ForkJoinPool.ManagedBlocker.
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
| Handle |
Mendapatkan nilai JNI dari objek Android yang mendasar. (Diperoleh dari IJavaObject) |
| IsReleasable |
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam |
| 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 dibungkus JniObjectReference . (Diperoleh dari IJavaPeerable) |
Metode
| Block() |
Mungkin memblokir utas saat ini, misalnya menunggu kunci atau kondisi. |
| Disposed() |
Dipanggil ketika instans telah dibuang. (Diperoleh dari IJavaPeerable) |
| DisposeUnlessReferenced() |
Jika tidak ada referensi yang luar biasa untuk instans ini, maka panggilan |
| Finalized() |
Dipanggil ketika instans telah diselesaikan. (Diperoleh dari IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Atur nilai yang dikembalikan oleh |
| SetJniManagedPeerState(JniManagedPeerStates) |
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam |
| 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
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android. |
| JavaCast<TResult>(IJavaObject) |
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam |
| GetJniTypeName(IJavaPeerable) |
Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam |