La clase Stock, heredera de JApplet, incorpora setLayout(new gridLayout(3,1)); Esta declaración de layout define 3 filas con una columna cada una.
Las clases Producion y Consumo corren en hilos independientes, arrancados en Stock. Producción corre en las dos primeras, Consumo en la ultima. En cada una de ellas addActionListener(this) es la responsable de incorporar el escucha de acciones respectivo.
Las funciones de monitoreo estan definidas en dos clases adicionales, ControlsProd y ControlsCons, donde las acciones son detectadas por actionPerformed(ActionEvent ev) quien setea las variables de instancia producir y consumir, en las clases Produccion y Consumo,respectivamente.
El consumo está sincronizado con la producción. Para ello usamos una variable static stock definida en la clase Stock, actualizada por los métodos sincronizados sumStock() y hayStock() invocados por las clases Produccion y Consumo, respectivamente.