Concurrency Intermediário

Substitua a coordenação produtor-consumidor escrita à mão por BlockingQueue.

✕ 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.
🛡

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
Filas com wait e notify para BlockingQueue
Disponível

Amplamente disponível desde o JDK 5 (2004)

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.