Colas de tareas en Java para principiantes: guía sencilla

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿qué es una cola de tareas en Java y para qué sirve?



En programación, a menudo surge la necesidad de procesar datos en el orden en que llegan. Imagine una cola en la caja de un supermercado: el primero que llega es el primero en ser atendido. En Java, esta lógica la implementa la interfaz Queue y sus implementaciones. Una cola de tareas (Task Queue) es una estructura de datos que funciona bajo el principio FIFO (First In, First Out — «primero en entrar, primero en salir»).



¿Para qué sirve? Las colas son indispensables para:

  • Procesar solicitudes en un servidor (servidor web, API)
  • Almacenar datos en búfer antes de escribirlos en la base de datos
  • Implementar un grupo de hilos (Thread Pool)
  • Organizar tareas asíncronas


En este artículo, analizaremos las principales interfaces y clases para trabajar con colas en Java, escribiremos ejemplos sencillos y daremos consejos prácticos. El material está pensado para principiantes, por lo que comenzaremos desde lo más básico.



1. La interfaz Queue y sus métodos básicos



En Java, la interfaz java.util.Queue define las operaciones principales para trabajar con una cola. Los métodos principales son:



  • add(E e) — agrega un elemento al final de la cola. Si la cola está llena, lanza una excepción.
  • offer(E e) — agrega un elemento. A diferencia de add(), devuelve false en caso de fallo, no una excepción.
  • remove() — elimina y devuelve el primer elemento. Si la cola está vacía, lanza una excepción NoSuchElementException.
  • poll() — elimina y devuelve el primer elemento, o null si la cola está vacía.
  • element() — devuelve el primer elemento sin eliminarlo. Lanza una excepción si la cola está vacía.
  • peek() — devuelve el primer elemento sin eliminarlo, o null.


La implementación más popular de Queue es LinkedList. Es simple y adecuada para la mayoría de las tareas básicas.



import java.util.LinkedList;import java.util.Queue;

public class QueueExample { public static void main(String[] args) { // Creamos una cola de cadenas Queue<String> taskQueue = new LinkedList<>();

// Agregamos tareas (método offer) taskQueue.offer("Tarea 1: Procesar pedido"); taskQueue.offer("Tarea 2: Enviar email"); taskQueue.offer("Tarea 3: Generar informe");

System.out.println("Cola de tareas: " + taskQueue);

// Procesamos las tareas en orden while (!taskQueue.isEmpty()) { String task = taskQueue.poll(); // Tomamos la primera tarea System.out.println("Ejecutando: " + task); // Aquí se puede escribir la lógica de ejecución }

System.out.println("Todas las tareas completadas. Cola vacía: " + taskQueue.isEmpty()); }}


Salida del programa:

Cola de tareas: [Tarea 1: Procesar pedido, Tarea 2: Enviar email, Tarea 3: Generar informe]Ejecutando: Tarea 1: Procesar pedidoEjecutando: Tarea 2: Enviar emailEjecutando: Tarea 3: Generar informeTodas las tareas completadas. Cola vacía: true


2. Deque — cola bidireccional



La interfaz Deque (Double Ended Queue) extiende Queue y permite trabajar con ambos extremos de la cola. Puede agregar y eliminar elementos tanto al principio como al final. Esto proporciona más flexibilidad.



Métodos adicionales principales:

  • addFirst() / offerFirst() — agregar al principio.
  • addLast() / offerLast() — agregar al final (análogo a offer()).
  • removeFirst() / pollFirst() — eliminar del principio.
  • removeLast() / pollLast() — eliminar del final.
  • getFirst() / peekFirst() — ver el primer elemento.

Blogs

Book Recommendations