import java.util.Random;

/**
 * A producer puts the integers 1, ..., ITERATION in the buffer.
 *
 * @version     1.1    January 25, 2000
 * @author      Franck van Breugel
 * @see Buffer
 */
public class Producer extends Thread 
{
    private static int producers = 0; // number of producers

    private Buffer buffer;            // the buffer where this producer puts its elements
    private int id;                   // number of this producer

    /**
     * Constructs a producer which put elements in the specified buffer.
     *
     * @param buffer The buffer where this producer puts its elements.
     */
    public Producer(Buffer buffer) 
    {
        producers++;
        this.buffer = buffer;
        id = producers;
    }

    /** Number of elements to be put in the buffer. */
    private static final int ITERATION = 20;

    /** Maximal delay in miliseconds */
    private static int MAX_DELAY = 9999;

    /** Puts the integers 1, ..., ITERATION in the buffer. */
    public void run() 
    {
        Random generator = new Random();

        for (int i = 0; i < ITERATION; i++) 
        {
            buffer.put(new Integer(i));
            System.out.println("Producer " + id + " has put " + i);
            try
            {
                Thread.sleep((long) 1 + generator.nextInt(MAX_DELAY));
            }
            catch (InterruptedException e) {}
        }
    }
}









