ForkJoinPool.IManagedBlocker Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
| JniIdentityHashCode |
Gibt den Wert |
| 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 |
| Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Legen Sie den von |
| SetJniManagedPeerState(JniManagedPeerStates) |
Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in |
| SetPeerReference(JniObjectReference) |
Legen Sie den von |
| 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 |
| GetJniTypeName(IJavaPeerable) |
Schnittstelle zum Erweitern der verwalteten Parallelität für Aufgaben, die in |