PipedInputStream和PipedOutputStream

管道流,用于线程间的通信。一个线程的PipedInputStream对象从另外一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

代码
import java.io.IOException;
import java.io.PipedOutputStream;

public class Producer extends Thread {
private PipedOutputStream pos;

public Producer(PipedOutputStream pos) {
this.pos = pos;
}

@Override
public void run() {
super.run();
try {
pos.write(
"Hello".getBytes());
}
catch (IOException e) {
e.printStackTrace();
}
}
}

 

代码
import java.io.IOException;
import java.io.PipedInputStream;

public class Consumer extends Thread {
private PipedInputStream pis;

public Consumer(PipedInputStream pis) {
this.pis = pis;
}

@Override
public void run() {
super.run();
byte[] b = new byte[100]; // 将数据保存在byte数组中
try {
int len = pis.read(b); // 从数组中得到实际大小。
System.out.println(new String(b, 0, len));
pis.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}

 

PipedStreamTest
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedStreamTest {
public static void main(String[] args) {
PipedOutputStream pos
= new PipedOutputStream();
PipedInputStream pis
= new PipedInputStream();
try {
pos.connect(pis);
// 连接管道

new Producer(pos).start();// 启动线程

new Consumer(pis).start();// 启动线程

}
catch (IOException e) {
e.printStackTrace();
}
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2010-12-23 23:01  meng72ndsc  阅读(3075)  评论(0编辑  收藏  举报