📄 pipedstreamtest.java
字号:
/*PipedInputStream和PipedOutputStream并不是由FilterInputStream和FilterOutputStream
* 派生而来的,它继承的是InputStream和OutputStream抽象类.因此管道流不属于过滤流。
* 管道流用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream
* 对象读取输入。要使管道流有用必须同时构造管道输入流和管道输出流。
*
*/
package io;
import java.io.*;
public class PipedStreamTest {
public static void main(String[] args) {
PipedOutputStream pos=new PipedOutputStream();
PipedInputStream pis=new PipedInputStream();
try {
pos.connect(pis); //管道输出流对象连接到管道输入流对象
//pis.connect(pos); //当然你也可以这样写,管道输入流对象连接到管道输出流对象。
} catch (IOException e) {
e.printStackTrace();
}
Producer p=new Producer(pos);
Consumer c=new Consumer(pis);
p.start();
c.start();
}
}
class Producer extends Thread{
private PipedOutputStream pos;
public Producer(PipedOutputStream pos){
this.pos=pos;
}
public void run(){
try {
pos.write("Hello,welcome you to our school !".getBytes());
pos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Consumer extends Thread{
private PipedInputStream pis;
public Consumer(PipedInputStream pis){
this.pis=pis;
}
public void run(){
byte[] buf=new byte[100];
int len;
try {
len = pis.read(buf);
System.out.println(new String(buf,0,len));
pis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -