Partager via


ForkJoinPool.IManagedBlocker Interface

Définition

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans 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
Attributs
Implémente

Remarques

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans ForkJoinPools.

A ManagedBlocker fournit deux méthodes. La méthode #isReleasable doit retourner true si le blocage n’est pas nécessaire. La méthode #block bloque le thread actuel si nécessaire (peut-être en interne avant isReleasable de bloquer réellement). Ces actions sont effectuées par n’importe quel thread appelant ForkJoinPool#managedBlock(ManagedBlocker). Les méthodes inhabituelles de cette API prennent en charge les synchronisateurs qui peuvent, mais ne le bloquent généralement pas pendant de longues périodes. De même, ils permettent un traitement interne plus efficace des cas dans lesquels des travailleurs supplémentaires peuvent être, mais ne sont généralement pas nécessaires pour garantir un parallélisme suffisant. À cette fin, les implémentations de méthode isReleasable doivent être aménables à un appel répété. Aucune méthode n’est appelée après un appel antérieur de ou block de isReleasable retour true.

Par exemple, voici un ManagedBlocker basé sur un 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());
              }
            }}

Voici une classe qui bloque éventuellement l’attente d’un élément dans une file d’attente donnée :

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

Documentation Java pour java.util.concurrent.ForkJoinPool.ManagedBlocker.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Propriétés

Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
IsReleasable

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans ForkJoinPools.

JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)

Méthodes

Block()

Bloque éventuellement le thread actuel, par exemple en attente d’un verrou ou d’une condition.

Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans ForkJoinPools.

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans ForkJoinPools.

GetJniTypeName(IJavaPeerable)

Interface permettant d’étendre le parallélisme managé pour les tâches exécutées dans ForkJoinPools.

S’applique à