public class Producer extends Thread { private final int _id; private final Monitor _monitor; private final int _toProduce; private int _produced; public Producer(Monitor monitor, int id, int toProduce) { _id = id; _monitor = monitor; _toProduce = toProduce; _produced = 0; } public synchronized void run() { while ( _produced < _toProduce ) { try { wait(1000); } catch (InterruptedException ie) { continue; } _monitor.add(_produced++); System.out.println("Producer "+_id+" produced "+(_produced-1)); } } }