Breaking

Post Top Ad

Your Ad Spot

martes, 10 de diciembre de 2019

¿Qué es Thread-Safe BlockingQueue en Java? ¿Cuándo deberías usarlo? Implementación adjunta

¿Qué es Threadsafe BlockingQueue en Java y cuándo debe usarlo?
Hasta ahora he escrito dos artículos sobre el concepto Productor Consumidor en Crunchify. Primero para explicar Java Semaphore y Mutex y segundo para explicar Lectura / Escritura concurrente .
En este tutorial de Java repasaremos el mismo concepto de productor / consumidor para explicar el BlockingQueue in Java.

¿Cuáles son las ventajas de Bloquear cola en Java?

java.util.Queue admite operaciones que esperan a que la cola deje de estar vacía cuando se recupera un elemento, y espera a que haya espacio disponible en la cola cuando se almacena un elemento.
java.util.BlockingQueue in java - Crunchify

Necesitamos crear cuatro clases Java:

  1. CrunchifyMessage.java para poner y recibir mensaje
  2. CrunchifyBlockingProducer.java para poner el mensaje en la cola
  3. CrunchifyBlockingConsumer.java para obtener el mensaje de la cola
  4. CrunchifyBlockingMain.java para comenzar la prueba
Las implementaciones de BlockingQueue son thread-safeTodos los métodos de colas son de naturaleza atómica y usan bloqueos internos .

Comencemos con la implementación Thread-Safe BlockingQueue en Java

Paso 1

Crea clase  CrunchifyMessage.javaEste es un simple objeto Java .

Paso 2

Cree un productor  CrunchifyBlockingProducer.java que haya creado un mensaje simple y póngalo en la cola .

Paso 3

Crear clase  CrunchifyBlockingConsumer.java que consume mensajes de la cola.

Etapa 4

Cree un CrunchifyBlockingMain.java método simple  que ejecute la prueba BlockingQueue Ejecute este programa para verificar el comportamiento de BlockingQueue.
Un BlockingQueue no acepta elementos nulos . Las implementaciones lanzan NullPointerException en intentos de agregar , poner u ofrecer un valor nulo .
Se utiliza un valor nulo como valor centinela para indicar el fallo de las operaciones de sondeo .

Resultado:

¿Cuándo debemos usar java.util.concurrent.BlockingQueue?

  • Cuando desee limitar algún tipo de solicitud entrante, debe usar el mismo
  • Un productor puede adelantarse mucho a los consumidores con una cola ilimitada. Si el consumidor no se pone al día con el productor, puede causar un  OutOfMemoryErrorEn situaciones como estas, puede ser mejor indicarle a un posible productor que la cola está llena y darse por vencido rápidamente ante un fallo.
    • En otras palabras: los productores están naturalmente estrangulados.
  • La cola de bloqueo se usa normalmente en aplicaciones concurrentes
  • Proporciona una implementación correcta y segura para subprocesos
  • El consumo de memoria también debe ser limitado

Únete a la discusión

Comparta y déjenos algunos comentarios sobre lo que piensa sobre este tema o si desea agregar algo.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas