使用通道pipe流可以将数据进行两个线程之间传递输入输出流。

解决方案 »

  1.   

    不过要注意输入输出流有字节限制的,当字节大于1024(好像) pipe通道就无法写入数据的
      

  2.   

    给你写一个简单示例:class Buffer{
      public synchronized void  write(){
        System.out.println("write!");
      }
      public synchronized void read(){
        System.out.println("read!");
      }
    }class WriteThread extends Thread{
      Buffer data;
      public WriteThread(Buffer d){
        data = d;
      }
      public void run(){
        int i =100;
        while(i>0){
          i--;
          data.write();
        }
      }
    }class ReadThread extends Thread{
      Buffer data;
      public ReadThread(Buffer d){
        data = d;
      }
      public void run(){
        int i =100;
        while(i>0){
          i--;
          data.read();
        }
      }
    }public class test {
    public static void main(String a[]){
        Buffer d = new Buffer();
        WriteThread wt = new WriteThread(d);
        ReadThread rt = new ReadThread(d);
        wt.start();
        rt.start();
      }}结果你会看到read和write交替进行,也就是说读和写两个线程并发进行,但是对Buffer的read和write方法却是同步的。你可以在这两个方法里面对共享的缓冲区进行操作。