日期:2014-05-20  浏览次数:20892 次

请高手帮我调试一下关于管道的程序!
import   java.io.*;
public   class   TestPipeStream
{
public   static   void   main(String   []   args)
{
try
{
Thread   t1=new   Sender();
Thread   t2=new   Receiver();
      //编译器说下面两行出现了错误,但我不明错在哪里?
                                                      PipedOutputStream   out=t1.getOutputStream();
PipedInputStream   in=t2.getInputStream();
out.connect(in);
t1.start();
t2.start();
}
catch(IOException   e)
{
System.out.println(e.getMessage());
}
}
}

class   Sender   extends   Thread
{
private   PipedOutputStream   out   =   new   PipedOutputStream();
public   PipedOutputStream   getOutputStream()
{
return   out;
}
public   void   run()
{
String   s=new   String( "Hello   receiver,how   are   you ");
try
{
out.write(s.getBytes());
out.close();
}
catch(IOException   e)
{
System.out.println(e.getMessage());
}
}
}

class   Receiver   extends   Thread
{
private   PipedInputStream   in   =   new   PipedInputStream();
public   PipedInputStream   getInputStream()
{
return   in;
}
public   void   run()
{
String   s=null;
byte[]   buf=new   byte[1024];
try
{
int   len=in.read(buf);
s=new   String(buf,0,len);
System.out.println( "the   following   message   comes   from   sender:\n "+s);
in.close();
}
catch(IOException   e)
{
System.out.println(e.getMessage());
}
}
}

------解决方案--------------------
你已经把t1,t2造型成Thread类型了, thread类没有getOutputStream()方法,如果你把t1造型成Sender,t2造型成Receiver就不会有错了
Sender t1 = new Sender();
Receiver t2 = new Receiver();