// class implementing a producer

class Producer extends Thread {
  Buffer buf;    // reference on the buffer
  int elem;      // next element to add

  // constructor
  Producer(String name, Buffer buf) {
    super(name);
    this.buf = buf;
  }

  // behavior of the producer
  public void run() {
    for(;;) {
      elem = 1+(int)(Math.random()*8.0);
      buf.addElement(elem, getName());
      try {
	sleep((int)Math.random()*100);
      } catch(InterruptedException x) {
	System.out.println(x);
      }
    }
  }
}
