ForkJoinPool.IManagedBlocker Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in ForkJoinPool
s.
[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 ForkJoinPool
s.
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 |
JniIdentityHashCode |
Restituisce il valore di |
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 |
Finalized() |
Chiamato quando l'istanza è stata finalizzata. (Ereditato da IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Impostare il valore restituito da |
SetJniManagedPeerState(JniManagedPeerStates) |
Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in |
SetPeerReference(JniObjectReference) |
Impostare il valore restituito da |
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 |
GetJniTypeName(IJavaPeerable) |
Interfaccia per estendere il parallelismo gestito per le attività in esecuzione in |