Freigeben über


ForkJoinPool.IManagedBlocker Schnittstelle

Definition

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

[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
Attribute
Implementiert

Hinweise

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

A ManagedBlocker stellt zwei Methoden bereit. Die Methode #isReleasable muss zurückgegeben werden true , wenn die Blockierung nicht erforderlich ist. Die Methode #block blockiert den aktuellen Thread bei Bedarf (möglicherweise intern aufrufen isReleasable , bevor er tatsächlich blockiert wird). Diese Aktionen werden von jedem Thread ausgeführt, der aufgerufen ForkJoinPool#managedBlock(ManagedBlocker)wird. Die ungewöhnlichen Methoden in dieser API berücksichtigen Synchronizer, die in der Regel jedoch lange Zeiträume blockieren können. Ebenso ermöglichen sie eine effizientere interne Handhabung von Fällen, in denen zusätzliche Arbeitnehmer sein können, aber in der Regel nicht erforderlich sind, um eine ausreichende Parallelität sicherzustellen. Zu diesem Zweck müssen Implementierungen der Methode isReleasable für wiederholte Aufrufe amenbar sein. Keine der Methoden wird nach einem vorherigen Aufruf isReleasable oder block Rückgabe trueaufgerufen.

Hier ist beispielsweise ein ManagedBlocker basierend auf einem ReentrantLock:For example, here is a ManagedBlocker based on a 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());
              }
            }}

Hier ist eine Klasse, die möglicherweise blockiert, bis auf ein Element in einer bestimmten Warteschlange gewartet wird:

{@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;
              }
            }}

Java-Dokumentation für java.util.concurrent.ForkJoinPool.ManagedBlocker.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
IsReleasable

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java-Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Block()

Blockiert möglicherweise den aktuellen Thread, z. B. auf eine Sperre oder Bedingung.

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

GetJniTypeName(IJavaPeerable)

Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in ForkJoinPools ausgeführt werden.

Gilt für: