ArrayBlockingQueue es una cola de bloqueo limitada que almacena los elementos respaldados internamente por una array.
- La clase ArrayBlockingQueue es miembro de Java Collections Framework.
- Acotado significa que tendrá un tamaño fijo, no puede almacenar el número de elementos más que la capacidad de la cola.
- La cola también sigue la regla FIFO (primero en entrar, primero en salir) para almacenar y eliminar elementos de la cola.
- Si intenta colocar un elemento en una cola llena o tomar un elemento de una cola vacía, la cola lo bloqueará.
Hay dos tipos de método poll() dependiendo del número de parámetros pasados.
- El método poll() recupera y elimina el elemento del encabezado de esta cola . Si la cola está vacía, el método devolverá un valor nulo.
Sintaxis:public E poll()
Valor devuelto: el método devuelve el elemento del encabezado de esta cola, o nulo si esta cola está vacía.
Los siguientes programas ilustran el método poll() de ArrayBlockingQueue.
Programa 1:
/*
*Program Demonstrate poll() method of ArrayBlockingQueue.
*/
import
java.util.concurrent.ArrayBlockingQueue;
public
class
GFG {
public
static
void
main(String[] args)
{
// define capacity of ArrayBlockingQueue
int
capacity =
5
;
// create object of ArrayBlockingQueue
ArrayBlockingQueue<Integer> queue =
new
ArrayBlockingQueue<Integer>(capacity);
// Add elements to ArrayBlockingQueue
queue.offer(
423
);
queue.offer(
233
);
queue.offer(
356
);
// print elements
System.out.println(
"Queue Contains"
+ queue);
// try to poll elements
System.out.println(
"Removing From head: "
+
queue.poll());
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+
queue.poll());
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+
queue.poll());
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+
queue.poll());
System.out.println(
"Queue Contains"
+ queue);
}
}
Producción:Queue Contains[423, 233, 356] Removing From head: 423 Queue Contains[233, 356] Removing From head: 233 Queue Contains[356] Removing From head: 356 Queue Contains[] Removing From head: null Queue Contains[]
Programa 2:
/*
* Program Demonstrate poll() method of ArrayBlockingQueue.
*/
import
java.util.concurrent.ArrayBlockingQueue;
public
class
GFG {
// Create a User Object with name and age as an attribute
public
class
User {
public
String name;
public
String age;
User(String name, String age)
{
this
.name = name;
this
.age = age;
}
}
// Main Method
public
static
void
main(String[] args)
{
GFG gfg =
new
GFG();
gfg.pollMethodExample();
}
// Method to give example of contains function
public
void
pollMethodExample()
{
// Define the capacity of ArrayBlockingQueue
int
capacity =
5
;
// Create object of ArrayBlockingQueue
ArrayBlockingQueue<User> queue =
new
ArrayBlockingQueue<User>(capacity);
// Create user objects
User user1 =
new
User(
"Aman"
,
"24"
);
User user3 =
new
User(
"Sanjeet"
,
"25"
);
// Add Objects to ArrayBlockingQueue
queue.offer(user1);
queue.offer(user3);
// Poll users from queue
User user = queue.poll();
System.out.println(
"removing user having name = "
+ user.name);
user = queue.poll();
System.out.println(
"removing user having name = "
+ user.name);
// Now queue is empty
// Try to remove it will return null
user = queue.poll();
System.out.println(
"removing user having name = "
+ user);
}
}
Producción:removing user having name = Aman removing user having name = Sanjeet removing user having name = null
- El método de encuesta ( tiempo de espera largo, unidad de unidad de tiempo ) recupera y elimina el elemento del encabezado de esta cola . Si la cola está vacía, lo hará, espere hasta un tiempo específico para que un elemento esté disponible.
Sintaxis:public E poll(long timeout, TimeUnit unit) throws InterruptedException
Parámetros: El método toma dos parámetros:
- tiempo de espera (largo): cuánto tiempo esperar antes de darse por vencido, en unidades de unidad.
- unidad (TimeUnit): una unidad de tiempo que determina cómo interpretar el parámetro de tiempo de espera.
Valor devuelto: el método devuelve el encabezado de esta cola, o nulo si transcurre el tiempo de espera especificado antes de que un elemento esté disponible.
Excepción: el método arroja InterruptedException si se interrumpe mientras espera.El siguiente programa ilustra el método de sondeo (tiempo de espera prolongado, unidad de unidad de tiempo) de ArrayBlockingQueue.
/*
* Program Demonstrate offer(E e, long timeout, TimeUnit unit)
* method of ArrayBlockingQueue.
*/
import
java.util.concurrent.ArrayBlockingQueue;
import
java.util.concurrent.TimeUnit;
public
class
GFG {
public
static
void
main(String[] args)
throws
InterruptedException
{
// Define capacity of ArrayBlockingQueue
int
capacity =
5
;
// Create object of ArrayBlockingQueue
ArrayBlockingQueue<Integer> queue =
new
ArrayBlockingQueue<Integer>(capacity);
// Add elements to ArrayBlockingQueue
queue.offer(
423
);
queue.offer(
233
);
queue.offer(
356
);
// Print elements
System.out.println(
"Queue Contains"
+ queue);
// Try to poll elements
System.out.println(
"Removing From head: "
+ queue.poll(
10
, TimeUnit.SECONDS));
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+ queue.poll(
10
, TimeUnit.SECONDS));
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+
queue.poll(
10
, TimeUnit.SECONDS));
System.out.println(
"Queue Contains"
+ queue);
System.out.println(
"Removing From head: "
+
queue.poll(
10
, TimeUnit.SECONDS));
}
}
Producción:Queue Contains[423, 233, 356] Removing From head: 423 Queue Contains[233, 356] Removing From head: 233 Queue Contains[356] Removing From head: 356 Queue Contains[] Removing From head: null
Referencia:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html#poll()
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA