管道流多用于多任务之间的通信
一、Sender
package test.pipstream;
import java.io.*;
public class Sender extends Thread
{
PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOut()
{
return out;
}
public void run()
{
String str = "Hello,receiver ! I`m sender/n";
try
{
out.write(str.getBytes());
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
二、Receiver
package test.pipstream;
import java.io.*;
public class Receiver extends Thread
{
PipedInputStream in = new PipedInputStream();
public PipedInputStream getIn()
{
return in;
}
public void run()
{
byte[] buf = new byte[1024];
try
{
int len = in.read(buf);
System.out.println("the following is from sender:/n" + new String(buf, 0, len));
in.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
三、多线程实现, main
package test.pipstream;
import java.io.*;
class TestPiped
{
public static void main(String[] args)
{
Sender s = new Sender();
Receiver r = new Receiver();
PipedOutputStream out = s.getOut();
PipedInputStream in = r.getIn();
try
{
in.connect(out);
s.start();
r.start();
} catch (Exception e)
{
e.printStackTrace();
}
}
}