用管道PipedInputStream和PipedOutputStream
输出线程往PipedOutputStream中写
输入线程从PipedInputStream中读
当然事先要把两个连接起来, 看看文档, 找找参考书. 应该可以解决这个问题

解决方案 »

  1.   

    //: c13:PipedIO.java
    // Using pipes for inter-thread I/O
    import java.io.*;
    import java.util.*;class Sender extends Thread {
      private Random rand = new Random();
      private PipedWriter out = new PipedWriter();
      public PipedWriter getPipedWriter() { return out; }
      public void run() {
        while(true) {
          for(char c = 'A'; c <= 'z'; c++) {
            try {
              out.write(c);
              sleep(rand.nextInt(500));
            } catch(Exception e) {
              throw new RuntimeException(e);
            }
          }
        }
      }
    }class Receiver extends Thread {
      private PipedReader in;
      public Receiver(Sender sender) throws IOException {
        in = new PipedReader(sender.getPipedWriter());
      }
      public void run() {
        try {
          while(true) {
            // Blocks until characters are there:
            System.out.println("Read: " + (char)in.read());
          }
        } catch(IOException e) {
          throw new RuntimeException(e);
        }
      }
    }public class PipedIO {
      public static void main(String[] args) throws Exception {
        Sender sender = new Sender();
        Receiver receiver = new Receiver(sender);
        sender.start();
        receiver.start();
        new Timeout(4000, "Terminated");
      }
    } ///:~这是 Thinking In Java 里的例子
    很有代表性