Colas con wait y notify a BlockingQueue
Reemplaza la coordinación productor-consumidor escrita a mano con BlockingQueue.
Comparación 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);
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
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
Soporte JDK
Colas con wait y notify a BlockingQueue
Disponible
Ampliamente disponible desde JDK 5 (2004)
Cómo funciona
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.
Documentación Relacionada
Prueba