Compartir a través de


ForkJoinPool.IManagedBlocker Interfaz

Definición

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 ForkJoinPools.

JniIdentityHashCode

Devuelve el valor de java.lang.System.identityHashCode() para la instancia ajustada.

(Heredado de IJavaPeerable)
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 Dispose(); de lo contrario, no hace nada.

(Heredado de IJavaPeerable)
Finalized()

Se llama cuando se ha finalizado la instancia.

(Heredado de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en ForkJoinPools.

(Heredado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Establezca el valor devuelto por PeerReference.

(Heredado de IJavaPeerable)
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 ForkJoinPools.

GetJniTypeName(IJavaPeerable)

Interfaz para extender el paralelismo administrado para las tareas que se ejecutan en ForkJoinPools.

Se aplica a