管道流就是进行两个线程间通讯的,使用PipedOutputStream和PipedInputStream两个类完成,但是这两个类使用的时候基本上都跟OutputStream和InputStream类似,唯一区别的是在于连接管道的操作上,public void connect(PipedInputStream  snk)throws IOException

 

import java.io.*;

class Send implements Runnable
{
 private PipedOutputStream output=null;
 public Send()
 {
  this.output=new PipedOutputStream();
 } 
 public PipedOutputStream getPipedOutputStream()
 {
  return this.output;
 }
 public void run()
 {
  String str="hello world";
  try {
   this.output.write(str.getBytes());
  } catch (IOException e) {
   e.printStackTrace();
  }
  try {
   this.output.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}
class Receive implements Runnable
{
 private PipedInputStream input=null;
 public Receive()
 {
  this.input=new PipedInputStream();
 }
 public PipedInputStream getPipedInputStream()
 {
  return this.input;
 }
 public void run()
 {
  byte b[]=new byte[1024];
  int len=0;
  try {
   len=this.input.read(b);
  } catch (IOException e) {
   e.printStackTrace();
  }
  try {
   this.input.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  System.out.println(new String(b,0,len));
 }
}
public class ThreadConnectDemo {
public static void main(String args[])
{
 Send send=new Send();
 Receive rec=new Receive();
 try {
  send.getPipedOutputStream().connect(rec.getPipedInputStream());
     new Thread(send).start();
     new Thread(rec).start();
 } catch (IOException e) {
  e.printStackTrace();
 }
}
}

 

posted on 2011-01-30 21:25  魔战  阅读(232)  评论(0编辑  收藏  举报