Queues: A Fila do Banco Digital
QUEUE TYPES
├── Queue (Fila Normal)
├── Deque (Fila Premium)
└── PriorityQueue (Fila Preferencial)
Fundamentos
Queues são como filas de banco digitais - primeiro a chegar, primeiro a ser atendido (FIFO).
// Criando uma fila digital
Queue<String> fila = new LinkedList<>();
fila.offer("Cliente#1"); // Entra na fila
String proximo = fila.poll(); // Próximo a ser atendido
Tipos de Queues
Queue Básica
Queue<String> atendimento = new LinkedList<>();
atendimento.offer("Usuário"); // Adiciona ao fim
atendimento.poll(); // Remove do início
atendimento.peek(); // Consulta próximo
Deque (Double-Ended Queue)
Deque<String> premium = new ArrayDeque<>();
premium.offerFirst("VIP"); // Fura fila
premium.offerLast("Regular"); // Entra normal
premium.pollFirst(); // Remove do início
premium.pollLast(); // Remove do fim
PriorityQueue
// Fila com prioridades
PriorityQueue<Integer> senha = new PriorityQueue<>();
senha.offer(3); // Organiza automaticamente
senha.offer(1); // por ordem natural
senha.offer(2); // ou comparador customizado
Operações Comuns
Inserção
Queue<String> fila = new LinkedList<>();
fila.offer("Normal"); // Preferido (retorna boolean)
fila.add("Força"); // Lança exceção se cheio
Remoção
String cliente = fila.poll(); // Retorna null se vazio
String proximo = fila.remove(); // Lança exceção se vazio
Consulta
String espiar = fila.peek(); // Retorna null se vazio
String primeiro = fila.element(); // Lança exceção se vazio
Casos de Uso
Processamento de Transações
Queue<Transaction> transactions = new LinkedList<>();
transactions.offer(new Transaction("Depósito"));
processTransaction(transactions.poll());
Sistema de Mensagens
PriorityQueue<Message> messages = new PriorityQueue<>();
messages.offer(new Message("Urgente", 1));
messages.offer(new Message("Normal", 2));
Dicas de Performance
// Inicialize com tamanho se souber
Queue<String> fila = new LinkedList<>(100);
// Use o tipo certo para o caso
Deque<String> rapido = new ArrayDeque<>(); // Mais eficiente que LinkedList
Exercícios Práticos
Implemente um sistema de atendimento
Crie um processador de eventos
Desenvolva um escalonador de tarefas
Próximos Passos
Depois de dominar Queues, você estará pronto para:
Gerenciar filas de processamento
Implementar sistemas de mensageria
Criar escalonadores de tarefas
26 June 2025