////// PipeConsumer.java ////// import java.io.*; public class PipeConsumer extends Thread { public PipeConsumer(PipedReader r) { in = r; } public int count() { return wcnt; } public void run() // consume { try { consume(); in.close(); } catch ( IOException e ) { JavaSystem.error(e); } } public void consume() throws IOException { char[] c = new char[1]; while ( in.read(c,0,1) > 0 ) // while more input { switch(c[0]) { case ' ' : case '\t': case '\r': case '\n': // word delimiters if ( word ) { wcnt++; // word ends word = false; } break; default: word = true; // word begins } } if ( word ) wcnt++; } private boolean word= false; // partial word indicator private int wcnt= 0; // whole words counted so far private PipedReader in; }