Threads
Application
OrderTaker class
The code for the OrderTaker class
public class OrderTaker extends Thread
{
private static int orderNumber = 1;
private int count = 0;
private int maxOrders;
private OrderQueue orderQueue;
private String name;
public OrderTaker(int orderCount, OrderQueue orderQueue)
{
this.maxOrders = orderCount; // number of orders to create
this.orderQueue = orderQueue; // order queue
}
public void run()
{
int orderNumber;
Order order;
while (count < maxOrders)
{
order = new Order(getOrderNumber());
orderQueue.pushOrder(order); // add order to the queue
System.out.println(order.toString() + " created by "
+ this.getName());
count++;
try
{
Thread.sleep(1000); // delay one second
}
catch (InterruptedException e)
{} // ignore interruptions
}
}
private synchronized int getOrderNumber()
{
return orderNumber++;
}
}