Concurrency Intermedio

Reemplaza la coordinación productor-consumidor escrita 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);
¿Ves un problema con este código? Cuéntanos.
🛡

Coordinación más segura

La cola se encarga del bloqueo y la señalización de condiciones.

👁

Intención clara

put() y take() expresan directamente el comportamiento productor-consumidor.

🎛

Políticas integradas

Elige capacidad limitada, equidad, tiempos de espera u operaciones no bloqueantes.

Enfoque Antiguo
wait y notify manuales
Enfoque Moderno
BlockingQueue
Desde JDK
5
Dificultad
Intermedio
Colas con wait y notify a BlockingQueue
Disponible

Ampliamente disponible desde JDK 5 (2004)

El código correcto de wait/notify requiere un monitor compartido, bucles de condición, notificaciones coincidentes y un manejo cuidadoso de la interrupción. BlockingQueue encapsula esas reglas y ofrece operaciones bloqueantes, con tiempo límite y no bloqueantes para flujos productor-consumidor. Llamadas como put() y take() siguen siendo interrumpibles.