lunes, 11 de julio de 2016

Productor - Consumidor en Java (Parqueadero de Carros)


El patron productor - consumidor es uno de los patrones mas basicos de la sincronizacion de procesos. Lo importante es identificar cuando debe ser usado. Para el siguiente tutorial propongo la siguiente situacion:

En un parqueadero los carros entran constantemente, y existen varias secciones. Sin embargo solo hay un ascensor y pueden entrar uno a la vez y una gran grua los situa en cada seccion.

Este seria un claro ejemplo de productor - consumidor,  productor serian los carros que aparecen constantemente, consumidor la grua que los coloca en cada seccion. Tambien podemos identificar un buffer es decir el numero de secciones. Finalmente el ascensor seria una especie de monitor que controla que existan carros por el productor y el consumidor este libre para colocarlos.

Comencemos con la clase Productor, que es una thread que va a crear nuevos objectos de la clase "Car", los va agregando en una cola y pone el ultimo elemento de la cola en el ascensor.