管道流就是进行两个线程间通讯的,使用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();
}
}
}