我在out.write后面加入了out.flush,可还是老样子啊?

解决方案 »

  1.   

    没有加换行符,把全部都作为一行来读取了,试试下面改后代码!!
    //: c13:PipedIO.java
    // Using pipes for inter-thread I/O
    // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
    // www.BruceEckel.com. See copyright notice in CopyRight.txt.
    import java.io.*;
    import java.util.*;class Sender extends Thread {
      private Random rand = new Random();
      private PipedWriter out = new PipedWriter();
      private BufferedReader in = new BufferedReader(new FileReader("PipedIO.java"));
      public Sender() throws IOException{
       super();
      }
      public PipedWriter getPipedWriter() { return out; }
      public void run() {
        while(true) {
              try{
               out.write(in.readLine()+"\n");
               out.flush();
              sleep(rand.nextInt(500));
             }catch(Exception e) {
              throw new RuntimeException(e);
            }
          }
        }
    }class Receiver extends Thread {
      private BufferedReader in;
      public Receiver(Sender sender) throws IOException {
        in = new BufferedReader(new PipedReader(sender.getPipedWriter()));
      }
      public void run() {
        try {
          while(true) {
            // Blocks until characters are there:
            //String str = in.readLine();
            System.out.println("Read: " +in.readLine());
          }
        } 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();
       
      }
    } ///:~