Cómo implementar la interfaz BlockingQueue en Java



Este artículo le proporcionará un conocimiento detallado y completo de cómo implementar una interfaz BlockingQueue en Java.

Una cola es un aspecto importante de cualquier lenguaje de programación. Especialmente si hablamos de . En este artículo, analizaremos la interfaz BlockingQueue en Java en el siguiente orden:

¿Qué es una interfaz BlockingQueue en Java?

Una interfaz BlockingQueue en Java es una cola que se bloquea cuando intenta salir de la cola y la cola está vacía, o si intenta poner elementos en la cola y la cola ya está llena. Un hilo que intenta salir de la cola de una cola vacía se bloquea hasta que otro hilo inserta un elemento en la cola. Un subproceso que intenta poner en cola un elemento en una cola completa se bloquea hasta que otro subproceso haga espacio en la cola, ya sea retirando uno o más elementos o limpiando la cola por completo.





cola de prioridad en c ++

La interfaz BlockingQueue en Java no aceptanulovalores y lanzamientoExcepción de puntero nulosi intenta almacenar el valor nulo en la cola.Las implementaciones de Java BlockingQueue son a salvo de amenazas . Todos los métodos de cola son de naturaleza atómica y utilizan bloqueos internos u otras formas de control de concurrencia.



Diagrama de clases de cola de Java

La interfaz Java Queue amplía la interfaz Collection. La interfaz Colección amplía la interfaz Iterable. Algunas de las clases de implementación de cola de uso frecuente son LinkedList, PriorityQueue, ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue,etc. AbstractQueue proporciona una implementación esquelética de la interfaz Queue para reducir el esfuerzo de implementación de Queue.

Bloqueo de tipos de cola

Los BlockingQueue son de dos tipos:



  • Cola ilimitada: La capacidad de la cola de bloqueo se establecerá en Integer.MAX_VALUE. En el caso de una cola de bloqueo ilimitada, la cola nunca se bloqueará porque podría crecer a un tamaño muy grande. cuando agregas elementos, su tamaño aumenta.

Sintaxis:
BlockingQueue bloqueando cola = nuevo LinkedBlockingDeque ()

  • Cola limitada: El segundo tipo de cola es la cola limitada. En el caso de la cola limitada, puede crear una cola sin pasar por la capacidad de la cola en el constructor de colas:
    Sintaxis:
    // Crea una cola de bloqueo con capacidad 5

BlockingQueue bloqueando cola = nuevo LinkedBlockingDeque (5)

Métodos en la interfaz BlockingQueue

Tipo de cambio Sintaxis del método Usado para Descripción
booleano agregar (E y) Inserción

Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin violar las restricciones de capacidad, devolviendo verdadero en caso de éxito y lanzando una IllegalStateException si no hay espacio disponible actualmente.

booleano contiene (Objeto o) Examinar

Devuelve verdadero si esta cola contiene el elemento especificado.

En t DrainTo (Colección c) Recuperación o eliminación

Elimina todos los elementos disponibles de esta cola y los agrega a la colección dada.

En t drenajeTo (Colección c, int maxElements) Recuperación o eliminación

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

booleano oferta (E y) Inserción

Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin violar las restricciones de capacidad, devolviendo verdadero en caso de éxito y falso si no hay espacio disponible actualmente.

booleano oferta (E e, tiempo de espera prolongado, unidad TimeUnit) Inserción

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

ES encuesta (tiempo de espera largo, unidad TimeUnit) Recuperación o eliminación

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

vacío poner (E e) Inserción

Inserta el elemento especificado en esta cola, esperando si es necesario hasta que haya espacio disponible.

En t capacidad restante () Examinar

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

cómo convertir de doble a int java
booleano eliminar (Objeto o) + Recuperación o eliminación

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

ES tomar() Recuperación o eliminación

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

Interfaz BlockingQueue en Java Ejemplo: servicio

paquete com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main (String [] args) {// Creando BlockingQueue de tamaño 10 BlockingQueue queue = new ArrayBlockingQueue ( 10) Productor productor = nuevo Productor (cola) Consumidor consumidor = nuevo consumidor (cola) // productor inicial para producir mensajes en la cola new Thread (productor) .start () // consumidor inicial para consumir mensajes de la cola new Thread (consumidor) .start () System.out.println ('Productor y consumidor se ha iniciado')}}

Con esto, llegamos al final del artículo Interfaz BlockingQueue en Java. Espero que ahora todos tus conceptos estén claros.

Revisar la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog 'BlockingQueue Interface en Java' y nos comunicaremos con usted lo antes posible.