/*
 * File: Customer.java
 * Author: Java, Java, Java
 * Description: This class defines a customer thread for
 *  the bakery simulation. Each customer object has a
 *  reference to the TakeANumber gadget. When a customer
 *  arrives in the bakery, it takes a number and then
 *  waits to be served.
 */

import javax.swing.JTextArea;

public class Customer2 implements Runnable
{
  private JTextArea utskrift;
  private static int number = 10000;      // Initial ID number
  private int id;
  private TakeANumber2 takeANumber;

  /**
   * Customer() constructor gives each customer a reference to 
   * the shared TakeANumber gadget and gives each an id number.
   */
  public Customer2(TakeANumber2 gadget, JTextArea t)
  {
    id = ++number;
    takeANumber = gadget;
    utskrift = t;
  }

  /**
   * run() is the main algorithm for the customer thread. It just 
   * takes a number when it enters the bakery and then waits to be 
   * served until the clerk calls its number.
   */
  public void run()
  {
    try
    {
      Thread.sleep((int) (Math.random() * 1000));
      utskrift.append("\nCustomer " + id + " takes ticket "
              + takeANumber.nextNumber());
    }
    catch (InterruptedException e)
    {
      System.out.println("Exception " + e.getMessage());
    }
  } // run()
} // Customer2