Filas com wait e notify para BlockingQueue
Substitua a coordenação produtor-consumidor escrita à mão por BlockingQueue.
Comparação de Código
✕ Manual wait and notify
synchronized (queue) {
while (queue.isEmpty()) {
queue.wait();
}
Job job = queue.removeFirst();
process(job);
}
✓ BlockingQueue
BlockingQueue<Job> queue = new LinkedBlockingQueue<>(); Job job = queue.take(); process(job);
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Coordenação mais segura
A fila é responsável pelo bloqueio e pela sinalização de condições.
Intenção clara
put() e take() expressam diretamente o comportamento produtor-consumidor.
Políticas integradas
Escolha capacidade limitada, justiça, tempos limite ou operações não bloqueantes.
Abordagem Antiga
wait e notify manuais
Abordagem Moderna
BlockingQueue
Desde o JDK
5
Dificuldade
Intermediário
Suporte JDK
Filas com wait e notify para BlockingQueue
Disponível
Amplamente disponível desde o JDK 5 (2004)
Como funciona
Código correto de wait/notify exige um monitor compartilhado, laços de condição, notificações correspondentes e tratamento cuidadoso de interrupção. BlockingQueue encapsula essas regras e oferece operações bloqueantes, com tempo limite e não bloqueantes para fluxos produtor-consumidor. Chamadas como put() e take() continuam interrompíveis.
Documentação Relacionada
Prova