www.pudn.com > jnp-src.rar > Consumer.java


/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import java.io.*; 
import java.util.*; 
 
public class Consumer extends Thread { 
  protected Vector objects; 
 
  public Consumer () { 
    objects = new Vector(); 
  } 
 
  public void run () { 
    try { 
      while (true) { 
        Object object = extract (); 
        System.out.println (object); 
      } 
    } catch (InterruptedException ignored) { 
    } 
  } 
   
  protected Object extract () throws InterruptedException { 
    synchronized (objects) { 
      while (objects.isEmpty ()) { 
        objects.wait (); 
      } 
      Object object = objects.firstElement (); 
      objects.removeElementAt (0); 
      return object; 
    } 
  } 
   
  public void insert (Object object) { 
    synchronized (objects) { 
      objects.addElement (object); 
      objects.notify (); 
    } 
  } 
 
  public static void main (String[] args) throws IOException, InterruptedException { 
    Consumer consumer = new Consumer (); 
    consumer.start (); 
    BufferedReader keyboard = new BufferedReader ( 
      new FileReader (FileDescriptor.in)); 
    String line; 
    while ((line = keyboard.readLine ()) != null) { 
      consumer.insert (line); 
      Thread.sleep (1000); 
    } 
  } 
}