Code wait/notify verso BlockingQueue
Sostituisci la coordinazione produttore-consumatore scritta a mano con BlockingQueue.
Confronto Codice
✕ 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.
Perché vince l'approccio moderno
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
Supporto JDK
Code wait/notify verso BlockingQueue
Disponibile
Ampiamente disponibile dal JDK 5 (2004)
Come funziona
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.
Documentazione Correlata
Prova