import java.util.Random;

/**
 * A consumer gets ITERATION elements from the buffer.
 *
 * @version     1.1    January 25, 2000
 * @author      Franck van Breugel
 * @see Buffer
 */
public class Consumer extends Thread 
{
    private static int consumers = 0; // number of consumers

    private Buffer buffer;            // the buffer from where this consumer gets its elements
    private int id;                   // number of this consumer

    /**
     * Constructs a consumer which gets elements from the specified buffer.
     *
     * @param buffer The buffer from where this consumer gets its elements.
     */
    public Consumer(Buffer buffer) 
    {
        consumers++;
        this.buffer = buffer;
        id = consumers;
    }

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

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

    /** Gets ITERATION integers from the buffer and prints them. */
    public void run() 
    {

	Random generator = new Random();

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

