Método de cola de prioridad de Java
agregar agrega un elemento. Si la cola está llena, genera una excepción IIIegaISlabEepeplian.
eliminar elimina y devuelve el elemento al principio de la cola. lanza NoSuchElementException.
elemento Devuelve el elemento al principio de la cola Si la cola está vacía, lanza NoSuchElementException Exception
oferta Agrega un elemento y devuelve verdadero Si la cola está llena, devuelve false
poll elimina y devuelve el elemento al principio de la cola. Si la cola está vacía, devuelve un valor nulo
peek Si la cola está vacía, devuelve el elemento en. el encabezado de la cola
poner bloques agregando un elemento si la cola está llena
tomar bloques elimina y devuelve el elemento al encabezado de la cola si la cola está vacía
eliminar, elemento, oferta, encuesta y vistazo es en realidad parte de la interfaz de cola.
2. Dependiendo del método de respuesta, las operaciones de bloqueo de cola se pueden dividir en los siguientes tres tipos: cuando intenta agregar elementos a una cola llena u obtener elementos de una cola vacía, aad, removee y element. las operaciones arrojan excepciones. Por supuesto, en un programa multiproceso, la cola puede llenarse o vaciarse en cualquier momento, por lo que es posible que deba utilizar los métodos de oferta, encuesta y vistazo. Estos métodos simplemente muestran un mensaje de error si no puede completar la tarea sin generar una excepción.
Nota: Los métodos poll y peek devolverán valores nulos en caso de error, por lo que insertar valores nulos en la cola es ilegal.
3. Los métodos de oferta y encuesta también tienen variantes de tiempo de espera, como la siguiente llamada:
boolean Success = q.offer(x,100,TimeUnit.MILLISECONDS); p >
Intente insertar un elemento al final de la cola en 100 milisegundos. Si tiene éxito, devuelve verdadero inmediatamente; de lo contrario, devuelve falso cuando se agota el tiempo de espera. De manera similar, llame a:
Object head = q.poll(100, TimeUnit.MILLISECONDS);
Si el elemento principal de la cola se elimina con éxito dentro de 100 milisegundos, devuelva el elemento principal inmediatamente; de lo contrario, se devuelve nulo cuando se agota el tiempo de espera.
4. Por último, tenemos las operaciones de bloqueo de poner y quitar. Cuando la cola está llena, el método put se bloquea; cuando la cola está vacía, el método take se bloquea.
El paquete java.ulil.concurrent proporciona cuatro colas de bloqueo. De forma predeterminada, la capacidad de LinkedBlockingQueue no está limitada (no exactamente, cuando no se especifica, la capacidad es Integer.MAX_VALUE; de lo contrario, cómo bloquearla al colocarla), pero puede optar por especificar su capacidad máxima, que se basa en la cola de la lista vinculada. La cola está ordenada por elementos FIFO (primero en entrar, primero en salir).
La construcción de ArrayBlockingQueue contiene una capacidad y un parámetro de equidad opcional. Si el parámetro de equidad se establece en verdadero, el hilo que ha estado esperando por más tiempo se procesará primero (de hecho, esta equidad se logra estableciendo ReentrantLock en verdadero: el hilo que ha estado esperando por más tiempo se procesará primero). Generalmente, la equidad afecta el rendimiento, así que úsela sólo cuando sea realmente necesario. Esta es una cola circular de bloqueo basada en matrices que clasifica elementos en formato FIFO (primero en entrar, primero en salir).
PriorityBlockingQueue es una cola ordenada por prioridad, no una cola de primero en entrar, primero en salir.
Los elementos se eliminan en orden de prioridad y la cola no tiene límite superior (según el código fuente, PriorityBlockingQueue es un reempaquetado de PriorityQueue y PriorityQueue se basa en la estructura de datos del montón. PriorityQueue no tiene límite de capacidad como ArrayList, por lo que se coloca en PriorityBlocking Queue Los elementos no están bloqueados. Aunque la cola es lógicamente ilimitada, los intentos de realizar una operación de adición pueden causar un OutOfMemoryError (error de falta de memoria) debido al agotamiento de los recursos, pero si la cola está vacía, la operación de toma para obtener la. El elemento se bloqueará, por lo que su operación de recuperación también se bloqueará. Además, los elementos que ingresan a la cola deben tener funciones de comparación.