📄 testpipedinputstream.java
字号:
package apibook.c3.s8;
import java.io.*;
//测试PipedOutputStream和PipedInputStream类
public class TestPipedInputStream {
public TestPipedInputStream() {
}
public static void main(String[] args) {
try {
PipedOutputStream producer = new PipedOutputStream();
PipedInputStream consumer = new PipedInputStream(producer);
StringConsumer strconsumer = new StringConsumer(consumer);
StringProducer strproducer = new StringProducer(producer);
strconsumer.start();
strproducer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//辅助类:字符串输出器
class StringConsumer extends Thread {
private DataInputStream in;
public StringConsumer(InputStream i) {
in = new DataInputStream(i);
}
public void run() {
while (true) {
try {
int num = in.available();
byte[] content = new byte[num];
in.read(content, 0, num);//从管道读取字符串
System.out.println("read from pipe: " + new String(content));
sleep(500);//sleep500毫秒
}
catch (IOException e) {
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//辅助类:字符串产生器
class StringProducer extends Thread {
private DataOutputStream out;
public StringProducer(OutputStream o) {
out = new DataOutputStream(o);
}
public void run() {
while (true) {
try {
String content = "string from stringproducer";
out.writeBytes(content);//向管道写入字符串
out.flush();
sleep(800); // sleep800毫秒
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -