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 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
- Atributos
- Implementaciones
Comentarios
Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en ForkJoinPools.
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 |