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