Condividi tramite


ForkJoinPool.IManagedBlocker Interfaccia

Definizione

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in 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
Attributi
Implementazioni

Commenti

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPools.

Un ManagedBlocker oggetto fornisce due metodi. Il metodo #isReleasable deve restituire true se il blocco non è necessario. Il metodo #block blocca il thread corrente, se necessario, ad esempio richiamando isReleasable internamente prima di bloccarlo effettivamente. Queste azioni vengono eseguite da qualsiasi thread che ForkJoinPool#managedBlock(ManagedBlocker)richiama . I metodi insoliti in questa API supportano i programmatori che possono, ma in genere, non bloccano per lunghi periodi. Analogamente, consentono una gestione interna più efficiente dei casi in cui altri lavoratori possono essere, ma in genere non sono necessari, per garantire un parallelismo sufficiente. Verso questo termine, le implementazioni del metodo isReleasable devono essere amenabili alla chiamata ripetuta. Nessuno dei due metodi viene richiamato dopo una chiamata precedente di isReleasable o block restituisce true.

Ad esempio, di seguito è riportato un ManagedBlocker basato su 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());
              }
            }}

Ecco una classe che può bloccare l'attesa di un elemento in una determinata coda:

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

Documentazione java per java.util.concurrent.ForkJoinPool.ManagedBlocker.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Proprietà

Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
IsReleasable

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPools.

JniIdentityHashCode

Restituisce il valore di java.lang.System.identityHashCode() per l'istanza di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
PeerReference

Restituisce un JniObjectReference oggetto dell'istanza dell'oggetto Java di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)

Metodi

Block()

È possibile bloccare il thread corrente, ad esempio in attesa di un blocco o di una condizione.

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non esegue alcuna operazione.

(Ereditato da IJavaPeerable)
Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPools.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituisca dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPools.

GetJniTypeName(IJavaPeerable)

Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPools.

Si applica a