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: }