Filas de Tarefas em Java para Iniciantes: Um Guia Simples

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: o que é uma fila de tarefas em Java e para que serve



Na programação, muitas vezes surge a necessidade de processar dados na ordem em que chegam. Imagine uma fila no caixa do supermercado: o primeiro a chegar é o primeiro a ser atendido. Em Java, essa lógica é implementada pela interface Queue e suas implementações. Uma fila de tarefas (Task Queue) é uma estrutura de dados que funciona pelo princípio FIFO (First In, First Out — "o primeiro a entrar é o primeiro a sair").



Para que serve isso? As filas são indispensáveis para:

  • Processamento de requisições em um servidor (servidor web, API)
  • Buffer de dados antes da gravação no banco de dados
  • Implementação de um pool de threads (Thread Pool)
  • Organização de tarefas assíncronas


Neste artigo, vamos abordar as principais interfaces e classes para trabalhar com filas em Java, escrever exemplos simples e dar dicas práticas. O material é voltado para iniciantes, então começaremos com o básico.



1. Interface Queue e seus métodos básicos



Em Java, a interface java.util.Queue define as operações principais para trabalhar com uma fila. Os principais métodos são:



  • add(E e) — adiciona um elemento ao final da fila. Se a fila estiver cheia, lança uma exceção.
  • offer(E e) — adiciona um elemento. Ao contrário de add(), retorna false em caso de falha, em vez de uma exceção.
  • remove() — remove e retorna o primeiro elemento. Se a fila estiver vazia, lança a exceção NoSuchElementException.
  • poll() — remove e retorna o primeiro elemento, ou null se a fila estiver vazia.
  • element() — retorna o primeiro elemento sem removê-lo. Lança exceção se a fila estiver vazia.
  • peek() — retorna o primeiro elemento sem removê-lo, ou null.


A implementação mais popular de Queue é LinkedList. Ela é simples e adequada para a maioria das tarefas básicas.



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

public class QueueExample { public static void main(String[] args) { // Criando uma fila de strings Queue<String> taskQueue = new LinkedList<>();

// Adicionando tarefas (método offer) taskQueue.offer("Tarefa 1: Processar pedido"); taskQueue.offer("Tarefa 2: Enviar email"); taskQueue.offer("Tarefa 3: Gerar relatório");

System.out.println("Fila de tarefas: " + taskQueue);

// Processando as tarefas em ordem while (!taskQueue.isEmpty()) { String task = taskQueue.poll(); // Pegando a primeira tarefa System.out.println("Executando: " + task); // Aqui você pode escrever a lógica de execução }

System.out.println("Todas as tarefas concluídas. Fila vazia: " + taskQueue.isEmpty()); }}


Saída do programa:

Fila de tarefas: [Tarefa 1: Processar pedido, Tarefa 2: Enviar email, Tarefa 3: Gerar relatório]Executando: Tarefa 1: Processar pedidoExecutando: Tarefa 2: Enviar emailExecutando: Tarefa 3: Gerar relatórioTodas as tarefas concluídas. Fila vazia: true


2. Deque — fila bidirecional



A interface Deque (Double Ended Queue) estende Queue e permite trabalhar com ambas as extremidades da fila. Você pode adicionar e remover elementos tanto do início quanto do final. Isso oferece mais flexibilidade.



Principais métodos adicionais:

  • addFirst() / offerFirst() — adicionar no início.
  • addLast() / offerLast() — adicionar no final (análogo a offer()).
  • removeFirst() / pollFirst() — remover do início.
  • removeLast() / pollLast() — remover do final.
  • getFirst() / peekFirst() — visualizar o primeiro elemento.

Blogs

Book Recommendations