public class Middleman extends Thread { private QBuffer in, out; private Person p; private boolean done; // constructor: initializes queue references and exit flag public Middleman (QBuffer b1, QBuffer b2) { // the parameters b1 and b2 are pointers to input and output queues in = b1; out = b2; done = false; } // get items from in queue, reduce by 10 pounds, send to out queue // quit when the Go Away message is spotted public void run () { while (! done) { if (! in.isEmpty() && ! out.isFull()) { p = (Person) in.dequeue(); p.setWeight(p.getWeight() - 10); out.enqueue(p); if (p.getName().compareTo("Go Away") == 0) done=true; } else { yield(); } } System.out.println("Middleman is done"); } }