// @topic T11804 Multithreading -- Order Queue demo // @brief class OrderQueue package pckg; import java.util.LinkedList; public class OrderQueue { private LinkedList< Order > orderQueue = new LinkedList<>(); /**Adds the specified order to the queue*/ public synchronized void pushOrder( Order order ) { orderQueue.addLast( order ); // notify any waiting threads notifyAll(); } /**Retrieves the first available order from the queue*/ public synchronized Order pullOrder() { // if no orders in queue, wait while ( orderQueue.size() == 0 ) { try { // Invoke Object's class method to wait until there // is a wake-up call (e.g. notifyAll) from another thread: wait(); } catch ( InterruptedException ex ) { // ignore interruptions } } return orderQueue.removeFirst(); } }