// @topic T11806 Multithreading -- Order Queue demo // @brief class OrderTaker extends Thread package pckg; public class OrderTaker extends Thread { private static int orderNumber = 1; private int count = 0; private int maxOrders; private OrderQueue orderQueue; // constructors public OrderTaker( int orderCount, OrderQueue orderQueue ) { this.maxOrders = orderCount; // orders to create this.orderQueue = orderQueue; // order queue } // operations @Override /**Worker thread task: add specified number of orders to the queue*/ public void run() { Order order; while ( count < maxOrders ) { order = new Order( getOrderNumber() ); // add order to the queue orderQueue.pushOrder( order ); System.out.println( order.toString() + " created by " + this.getName() ); count++; try { Thread.sleep( 1000 ); // delay one second } catch ( InterruptedException ex ) { // ignore interruptions } } } /**System-wide safe order number generator*/ private static synchronized int getOrderNumber() { return orderNumber++; } }//class OrderTaker