    01: /**
    02:    An action that repeatedly removes a greeting from a queue.
    03: */
    04: public class Consumer implements Runnable
    05: {
    06:    /**
    07:       Constructs the consumer object.
    08:       @param aQueue the queue from which to retrieve greetings
    09:       @param count the number of greetings to consume
    10:    */
    11:    public Consumer(BoundedQueue<String> aQueue, int count)
    12:    {
    13:       queue = aQueue;
    14:       greetingCount = count;
    15:    }
    16:
    17:    public void run()
    18:    {
    19:       try
    20:       {
    21:          int i = 1;
    22:          while (i <= greetingCount)
    23:          {
    24:             if (!queue.isEmpty())
    25:             {
    26:                String greeting = queue.remove();
    27:                System.out.println(greeting);
    28:                i++;
    29:             }
    30:             Thread.sleep((int)(Math.random() * DELAY));
    31:          }
    32:       }
    33:       catch (InterruptedException exception)
    34:       {
    35:       }
    36:    }
    37:
    38:    private BoundedQueue<String> queue;
    39:    private int greetingCount;
    40:
    41:    private static final int DELAY = 10;
    42: }