Bagikan melalui


ForkJoinPool.IManagedBlocker Antarmuka

Definisi

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 ForkJoinPools.

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 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 Dispose(); jika tidak, tidak melakukan apa pun.

(Diperoleh dari IJavaPeerable)
Finalized()

Dipanggil ketika instans telah diselesaikan.

(Diperoleh dari IJavaPeerable)
SetJniIdentityHashCode(Int32)

Atur nilai yang dikembalikan oleh JniIdentityHashCode.

(Diperoleh dari IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam ForkJoinPools.

(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

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 ForkJoinPools.

GetJniTypeName(IJavaPeerable)

Antarmuka untuk memperluas paralelisme terkelola untuk tugas yang berjalan dalam ForkJoinPools.

Berlaku untuk