ForkJoinPool.IManagedBlocker Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en 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
- Atributos
- Implementaciones
Comentarios
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en ForkJoinPool
s.
A ManagedBlocker
proporciona dos métodos. El método #isReleasable
debe devolver true
si el bloqueo no es necesario. El método #block
bloquea el subproceso actual si es necesario (quizás invoque isReleasable
internamente antes de bloquearse). Estas acciones se realizan mediante cualquier subproceso que invoque ForkJoinPool#managedBlock(ManagedBlocker)
. Los métodos inusuales de esta API admiten sincronizadores que pueden, pero no suelen bloquearse durante largos períodos. Del mismo modo, permiten un control interno más eficaz de los casos en los que pueden ser trabajadores adicionales, pero normalmente no son necesarios para garantizar un paralelismo suficiente. Hacia este final, las implementaciones del método isReleasable
deben ser accesibles para invocar repetidamente. Ninguno de los métodos se invoca después de una invocación anterior de isReleasable
o block
devuelve true
.
Por ejemplo, este es un ManagedBlocker basado en 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());
}
}}
Esta es una clase que posiblemente bloquea la espera de un elemento en una cola determinada:
{@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;
}
}}
Documentación de Java para java.util.concurrent.ForkJoinPool.ManagedBlocker
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Propiedades
Handle |
Obtiene el valor JNI del objeto Android subyacente. (Heredado de IJavaObject) |
IsReleasable |
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en |
JniIdentityHashCode |
Devuelve el valor de |
JniManagedPeerState |
Estado del mismo nivel administrado. (Heredado de IJavaPeerable) |
JniPeerMembers |
Compatibilidad con la invocación y el acceso de miembros. (Heredado de IJavaPeerable) |
PeerReference |
Devuelve una JniObjectReference de la instancia de objeto Java ajustada. (Heredado de IJavaPeerable) |
Métodos
Block() |
Posiblemente bloquee el subproceso actual, por ejemplo, esperando un bloqueo o condición. |
Disposed() |
Se llama cuando se ha eliminado la instancia. (Heredado de IJavaPeerable) |
DisposeUnlessReferenced() |
Si no hay referencias pendientes a esta instancia, llama a |
Finalized() |
Se llama cuando se ha finalizado la instancia. (Heredado de IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Establezca el valor devuelto por |
SetJniManagedPeerState(JniManagedPeerStates) |
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en |
SetPeerReference(JniObjectReference) |
Establezca el valor devuelto por |
UnregisterFromRuntime() |
Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Heredado de IJavaPeerable) |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en |
GetJniTypeName(IJavaPeerable) |
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en |