////// Producer.java ////// import java.io.*; public class Producer extends Thread { public Producer(Cirbuf b) { buffer = b;} public void run() { produce(); buffer.finished(true); } private void produce() { int c; while ( true ) try { if ( (c = System.in.read()) >= 0 ) buffer.put((char)c); // deposit into buffer else return; // no more input } catch(IOException e) { JavaSystem.error(e); } } private Cirbuf buffer; // mutex object }