Concurrency Intermedio

Sostituisci la coordinazione produttore-consumatore scritta a mano con 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);
Vedi un problema con questo codice? Faccelo sapere.
🛡

Coordinazione più sicura

La coda gestisce il blocco e la segnalazione delle condizioni.

👁

Intento chiaro

put() e take() esprimono direttamente il comportamento produttore-consumatore.

🎛

Politiche integrate

Scegli capacità limitata, equità, timeout o operazioni non bloccanti.

Approccio Vecchio
wait e notify manuali
Approccio Moderno
BlockingQueue
Dal JDK
5
Difficoltà
Intermedio
Code wait/notify verso BlockingQueue
Disponibile

Ampiamente disponibile dal JDK 5 (2004)

Un codice wait/notify corretto richiede un monitor condiviso, cicli di condizione, notifiche corrispondenti e una gestione attenta dell'interruzione. BlockingQueue incapsula queste regole e fornisce operazioni bloccanti, temporizzate e non bloccanti per i flussi produttore-consumatore. Chiamate come put() e take() restano interrompibili.