ArrayBlockingQueue y LinkedBlockingQueue en Java Collection son las implementaciones comunes de la interfaz BlockingQueue .
ArrayBlockingQueue : ArrayBlockingQueue es una clase en Java que implementa lainterfaz BlockingQueue . La clase ArrayBlockingQueue y su iterador implementan la operación ArrayBlockingQueue internamente (primero en entrar, primero en salir)
LinkedBlockingQueue delimitado opcionalmente, Integer.MAX_VALUE La clase BlockingQueue y su iterador se implementan internamente (primero en entrar, primero en salir)
Java
// Java program to demonstrate LinkedBlockingQueue import java.util.concurrent.LinkedBlockingQueue; public class LinkedBlockingQueueDemo { public static void main(String[] args) { // define capacity of LinkedBlockingQueue int capacity = 15; // create object of LinkedBlockingQueue LinkedBlockingQueue<Integer> lbq = new LinkedBlockingQueue<Integer>(capacity); // add numbers lbq.add(1); lbq.add(2); lbq.add(3); // print queue System.out.println("LinkedBlockingQueue:" + lbq); } }
LinkedBlockingQueue:[1, 2, 3]
Demostración de ArrayBlockingQueue
Java
// Java program to demonstrate // ArrayBlockingQueue import java.util.concurrent.ArrayBlockingQueue; public class ArrayBlockingQueueDemo { public static void main(String[] args) { // define capacity of ArrayBlockingQueue int capacity = 15; // create object of ArrayBlockingQueue // using ArrayBlockingQueue(int initialCapacity) // constructor ArrayBlockingQueue<Integer> abq = new ArrayBlockingQueue<Integer>(capacity); // add numbers abq.add(1); abq.add(2); abq.add(3); // print queue System.out.println("ArrayBlockingQueue:" + abq); } }
ArrayBlockingQueue:[1, 2, 3]
ArrayBlockingQueue |
LinkedBlockingQueue |
---|---|
Almacena los elementos internamente en una array. | Almacena los elementos internamente en Nodes vinculados. |
ArrayBlockingQueue está limitado, lo que significa que el tamaño nunca cambiará después de su creación. | LinkedBlockingQueue tiene un límite opcional, lo que significa que puede tener un límite superior si lo desea. Si no se especifica un límite superior, se utiliza Integer.MAX_VALUE como límite superior. |
Tiene un rendimiento más bajo que las colas de Nodes vinculados. | Tiene un mayor rendimiento que las colas basadas en arreglos. |
Utiliza el algoritmo de condición doble de bloqueo único. Significa que productor y consumidor comparten un mismo candado. | Utiliza dos algoritmos de cola de bloqueo y tiene dos condiciones de bloqueo putLock y takeLock para insertar y eliminar elementos respectivamente de la cola. |
ArrayBlockingQueue siempre contiene una array de objetos | LinkedBlockingQueue es un Node vinculado con un objeto con tres campos de objeto. |
Publicación traducida automáticamente
Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA