Sender t1=new Sender();
Receiver t2=new Receiver();
PipedOutputStream out=t1.getOutputStream();
PipedInputStream in=t2.getInputStream();
out.connect(in);
t1.start();
t2.start();我不懂 out.connect(in);他到底干了什么 通过jdk也没有看出个所以然
可以解释下吗  请说的详细点

解决方案 »

  1.   

    void connect(PipedInputStream snk) //Connects this piped output stream to a receiver. 就是把这个输出流链接到接受者,PipedOutputStream out=t1.getOutputStream(); 
    PipedInputStream in=t2.getInputStream(); 
    out.connect(in); 这里指的是输入流
      

  2.   

    import java.io.*;
    public class PipedStreamTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    PipedOutputStream pos=new PipedOutputStream();
    PipedInputStream pis=new PipedInputStream();
    try{
    pos.connect(pis);
    new pro(pos).start();
    new cxx(pis).start();
    }
    catch(Exception e)
    {e.printStackTrace();} }}
    class pro extends Thread
    {
    private PipedOutputStream pos;
    public pro( PipedOutputStream pos)
    {
    this.pos=pos;
    }
    public void run()
    {
    try{
    pos.write("www.kaka.com".getBytes());
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    class cxx extends Thread
    {
    private PipedInputStream pis;
    public  cxx(PipedInputStream pis)
    {
    this.pis=pis;
    }
    public void run()
    {
    try{
    byte[] buf=new byte[100];
    int len=pis.read(buf);
    System.out.println(new String(buf,0,len));
    pis.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
      

  3.   

    import java.io.*;
    public class PipedStreamTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    PipedOutputStream pos=new PipedOutputStream();
    PipedInputStream pis=new PipedInputStream();
    try{
    pos.connect(pis);
    new pro(pos).start();
    new cxx(pis).start();
    }
    catch(Exception e)
    {e.printStackTrace();} }}
    class pro extends Thread
    {
    private PipedOutputStream pos;
    public pro( PipedOutputStream pos)
    {
    this.pos=pos;
    }
    public void run()
    {
    try{
    pos.write("www.kaka.com".getBytes());
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    class cxx extends Thread
    {
    private PipedInputStream pis;
    public  cxx(PipedInputStream pis)
    {
    this.pis=pis;
    }
    public void run()
    {
    try{
    byte[] buf=new byte[100];
    int len=pis.read(buf);
    System.out.println(new String(buf,0,len));
    pis.close();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }
      

  4.   

     管道流 
    管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。java.io中提供了类PipedInputStream和PipedOutputStream作为管道的输入/输出流
    管道输入流作为一个通信管道的接收端,管道输出流则作为发送端。管道流必须是输入输出并用,即在使用管道前,两者必须进行连接
    管道输入/输出流可以用两种方式进行连接:
           在构造方法中进行连接
          PipedInputStream(PipedOutputStream pos);       
          PipedOutputStream(PipedInputStream pis);       
          通过各自的connect()方法连接
          在类PipedInputStream中,connect(PipedOutputStream pos);
         在类PipedOutputStream中,connect(PipedInputStream pis);