Compartir a través de


IBlockingQueue Interfaz

Definición

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

[Android.Runtime.Register("java/util/concurrent/BlockingQueue", "", "Java.Util.Concurrent.IBlockingQueueInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public interface IBlockingQueue : IDisposable, Java.Interop.IJavaPeerable, Java.Util.IQueue
[<Android.Runtime.Register("java/util/concurrent/BlockingQueue", "", "Java.Util.Concurrent.IBlockingQueueInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type IBlockingQueue = interface
    interface IQueue
    interface ICollection
    interface IIterable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Derivado
Atributos
Implementaciones

Comentarios

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

BlockingQueue Los métodos vienen en cuatro formas, con diferentes formas de controlar las operaciones que no se pueden satisfacer inmediatamente, pero que pueden cumplirse en algún momento en el futuro: uno produce una excepción, el segundo devuelve un valor especial (ya sea null o false, dependiendo de la operación), el tercero bloquea el subproceso actual indefinidamente hasta que la operación pueda realizarse correctamente y el cuarto bloque solo para un límite de tiempo máximo determinado antes de abandonar. Estos métodos se resumen en la tabla siguiente:

<table class="plain">caption Summary of BlockingQueue methods</caption><tr><td></td><th scope="col" style="font-weight:normal; font-style:italic">Throws exception</th><scope="col" style="font-weight:normal; font-style:italic">Special value</th<>scope="col" style="font-weight:normal; font-style:italic">Blocks</th<>scope="col" style="font-weight:normal;>< font-style:italic">Times out</th></tr tr><><th scope="row" style="text-align:left">Insert</th td#add(Object) add(e)></td#offer(Object) offer(e)<>>< td/td>><#put(Object) put(e)< td td/td<>#offer(Object, long, TimeUnit) offer(e, time, unit)<> td<>/tr tr<>><th scope="row" style="text-align:left">Remove</th<<>>td#remove() remove()<>/<>td td/td td/td>#poll() poll()<><td><#take() take()/td><td>#poll(long, TimeUnit) poll(time, unit)</td></tr tr>><<th scope="row" style="text-align:left">Examine</th<>td>#element() element()</td><#peek() peek()>< td/td td td><style="font-style: italic">not applicable</td td<>style="font-style: italic">not applicable</td></tr></table>

Un BlockingQueue no acepta null elementos. Las implementaciones inician NullPointerException intentos adden o offerput en .null null Se usa como un valor centinela para indicar errores de poll operaciones.

Un BlockingQueue puede estar limitado por la capacidad. En cualquier momento dado puede tener un remainingCapacity elemento más allá del cual ningún elemento adicional puede ser put sin bloqueo. Un BlockingQueue sin restricciones de capacidad intrínsecas siempre informa de una capacidad restante de Integer.MAX_VALUE.

BlockingQueue Las implementaciones están diseñadas para usarse principalmente para las colas de consumidores de productor, pero además admiten la Collection interfaz . Por lo tanto, por ejemplo, es posible quitar un elemento arbitrario de una cola mediante remove(x). Sin embargo, estas operaciones se realizan en general <em>not</em> de forma muy eficaz y están pensadas solo para uso ocasional, como cuando se cancela un mensaje en cola.

BlockingQueue las implementaciones son seguras para subprocesos. Todos los métodos de puesta en cola logran sus efectos de forma atómica mediante bloqueos internos u otras formas de control de simultaneidad. Sin embargo, las <operaciones em bulk</em> Collection , retainAllcontainsAlly removeAll son <em>not</em> necesariamente realizadas de forma atómica a menos que se especifique lo contrario en una implementación.addAll> Por lo tanto, es posible, por ejemplo, para addAll(c) producir un error (iniciar una excepción) después de agregar solo algunos de los elementos en c.

A BlockingQueue no <soporta><> intrínsecamente ningún tipo de " close" o " apagar" operación para indicar que no se agregarán más elementos. Las necesidades y el uso de estas características tienden a depender de la implementación. Por ejemplo, una táctica común es que los productores inserten objetos especiales <em>end-of-stream</em> o <em>poison</em> , que se interpretan en consecuencia cuando los consumidores toman.

Ejemplo de uso, basado en un escenario típico de productor-consumidor. Tenga en cuenta que un BlockingQueue objeto se puede usar de forma segura con varios productores y varios consumidores.

{@code
            class Producer implements Runnable {
              private final BlockingQueue queue;
              Producer(BlockingQueue q) { queue = q; }
              public void run() {
                try {
                  while (true) { queue.put(produce()); }
                } catch (InterruptedException ex) { ... handle ...}
              }
              Object produce() { ... }
            }

            class Consumer implements Runnable {
              private final BlockingQueue queue;
              Consumer(BlockingQueue q) { queue = q; }
              public void run() {
                try {
                  while (true) { consume(queue.take()); }
                } catch (InterruptedException ex) { ... handle ...}
              }
              void consume(Object x) { ... }
            }

            class Setup {
              void main() {
                BlockingQueue q = new SomeQueueImplementation();
                Producer p = new Producer(q);
                Consumer c1 = new Consumer(q);
                Consumer c2 = new Consumer(q);
                new Thread(p).start();
                new Thread(c1).start();
                new Thread(c2).start();
              }
            }}

Efectos de coherencia de memoria: al igual que con otras colecciones simultáneas, las acciones de un subproceso antes de colocar un objeto en una BlockingQueue<acción i>before</i> posterior al acceso o eliminación de ese elemento de BlockingQueue en otro subproceso.

Esta interfaz es miembro de Java Collections Framework.

Agregado en 1.5.

Documentación de Java para java.util.concurrent.BlockingQueue.

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)
IsEmpty

Devuelve si no Collection contiene ningún elemento.

(Heredado de ICollection)
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

Add(Object)

Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin infringir las restricciones de capacidad, volviendo true al éxito e iniciando un IllegalStateException si no hay espacio disponible actualmente.

AddAll(ICollection)

Agrega todos los elementos de la colección especificada a esta colección (operación opcional).

(Heredado de ICollection)
Clear()

Quita todos los elementos de esta colección (operación opcional).

(Heredado de ICollection)
Contains(Object)

Devuelve true si esta cola contiene el elemento especificado.

ContainsAll(ICollection)

Devuelve true si esta colección contiene todos los elementos de la colección especificada.

(Heredado de ICollection)
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)
DrainTo(ICollection)

Quita todos los elementos disponibles de esta cola y los agrega a la colección especificada.

DrainTo(ICollection, Int32)

Quita como máximo el número dado de elementos disponibles de esta cola y los agrega a la colección especificada.

Element()

Recupera, pero no quita, el encabezado de esta cola.

(Heredado de IQueue)
Equals(Object)

Compara el objeto especificado con esta colección para obtener igualdad.

(Heredado de ICollection)
Finalized()

Se llama cuando se ha finalizado la instancia.

(Heredado de IJavaPeerable)
ForEach(IConsumer)

Realiza la acción dada para cada elemento de Iterable hasta que se hayan procesado todos los elementos o la acción produce una excepción.

(Heredado de IIterable)
GetHashCode()

Devuelve el valor de código hash de esta colección.

(Heredado de ICollection)
Iterator()

Devuelve un iterador sobre los elementos de esta colección.

(Heredado de ICollection)
Offer(Object)

Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin infringir las restricciones de capacidad, volviendo true al éxito y false si no hay espacio disponible actualmente.

Offer(Object, Int64, TimeUnit)

Inserta el elemento especificado en esta cola, esperando hasta el tiempo de espera especificado si es necesario para que el espacio esté disponible.

Peek()

Recupera, pero no quita, el encabezado de esta cola o devuelve null si esta cola está vacía.

(Heredado de IQueue)
Poll()

Recupera y quita el encabezado de esta cola o devuelve null si esta cola está vacía.

(Heredado de IQueue)
Poll(Int64, TimeUnit)

Recupera y quita el encabezado de esta cola, esperando hasta el tiempo de espera especificado si es necesario para que un elemento esté disponible.

Put(Object)

Inserta el elemento especificado en esta cola, esperando si es necesario para que el espacio esté disponible.

RemainingCapacity()

Devuelve el número de elementos adicionales que esta cola puede aceptar idealmente (en ausencia de restricciones de memoria o recursos) sin bloqueo o Integer.MAX_VALUE si no hay ningún límite intrínseco.

Remove()

Recupera y quita el encabezado de esta cola.

(Heredado de IQueue)
Remove(Object)

Quita una sola instancia del elemento especificado de esta cola, si está presente.

RemoveAll(ICollection)

Quita todos los elementos de esta colección que también están incluidos en la colección especificada (operación opcional).

(Heredado de ICollection)
RemoveIf(IPredicate)

Quita todos los elementos de esta colección que satisfacen el predicado especificado.

(Heredado de ICollection)
RetainAll(ICollection)

Conserva solo los elementos de esta colección que se encuentran en la colección especificada (operación opcional).

(Heredado de ICollection)
SetJniIdentityHashCode(Int32)

Establezca el valor devuelto por JniIdentityHashCode.

(Heredado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

(Heredado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Establezca el valor devuelto por PeerReference.

(Heredado de IJavaPeerable)
Size()

Devuelve el número de elementos de esta colección.

(Heredado de ICollection)
Spliterator()

Crea un Spliterator elemento sobre los elementos descritos por este Iterable.

(Heredado de IIterable)
Take()

Recupera y quita el encabezado de esta cola, esperando si es necesario hasta que un elemento esté disponible.

ToArray()

Devuelve una matriz que contiene todos los elementos de esta colección.

(Heredado de ICollection)
ToArray(IIntFunction)

Devuelve una matriz que contiene todos los elementos de esta colección, utilizando la función proporcionada generator para asignar la matriz devuelta.

(Heredado de ICollection)
ToArray(Object[])

Devuelve una matriz que contiene todos los elementos de esta colección; el tipo en tiempo de ejecución de la matriz devuelta es el de la matriz especificada.

(Heredado de ICollection)
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)

Implementaciones de interfaz explícitas

IIterable.Spliterator()

Crea un elemento Spliterator sobre los elementos de esta colección.

(Heredado de ICollection)

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)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

GetJniTypeName(IJavaPeerable)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

OfferAsync(IBlockingQueue, Object)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

OfferAsync(IBlockingQueue, Object, Int64, TimeUnit)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

PollAsync(IBlockingQueue, Int64, TimeUnit)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

PutAsync(IBlockingQueue, Object)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

TakeAsync(IBlockingQueue)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

ToEnumerable(IIterable)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

ToEnumerable<T>(IIterable)

que Queue además admite operaciones que esperan a que la cola deje de estar vacía al recuperar un elemento y espere a que el espacio esté disponible en la cola al almacenar un elemento.

Se aplica a