Java管道流学习
2024-09-08 05:32:53
管道流
作用:用于线程之间的数据通信
管道流测试:一个线程写入,一个线程读取
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class PipedStreamDemo {
public static void main(String[] args) {
PipedInputStream pin = new PipedInputStream();
PipedOutputStream pout = new PipedOutputStream();
try {
pin.connect(pout);// 输入流与输出流链接
} catch (Exception e) {
e.printStackTrace();// 这是便于调试用的,上线的时候不需要
}
new Thread(new ReadThread(pin)).start();
new Thread(new WriteThread(pout)).start();
// 输出结果:读到: 一个美女。。
}
}
// 读取数据的线程
class ReadThread implements Runnable {
private PipedInputStream pin;// 输入管道
public ReadThread(PipedInputStream pin) {
this.pin = pin;
}
@Override
public void run() {
try {
byte[] buf = new byte[1024];
int len = pin.read(buf);// read阻塞
String s = new String(buf, 0, len);
System.out.println("读到: " + s);
pin.close();
} catch (IOException e) {
e.printStackTrace();
}
}// run
}// ReadThread
// 写入数据的线程
class WriteThread implements Runnable {
private PipedOutputStream pout;// 输出管道
public WriteThread(PipedOutputStream pout) {
this.pout = pout;
}
@Override
public void run() {
try {
pout.write("一个美女。。".getBytes());// 管道输出流
pout.close();
} catch (Exception e) {
e.printStackTrace();
}
}// run
}// WriteThread
最新文章
- UVa 489 HangmanJudge --- 水题
- 权限控制框架Shiro简单介绍及配置实例
- ELK 之四:搭建集群处理日PV 四亿次超大访问量优化方法
- java中List对象的操作方法
- C# Winform控件 - Form
- 1. Packet sniffers (包嗅探器 14个)
- 需要重写URL但请求的目录不存在报404
- Tomcat清理日志文件无法立即释放磁盘空间
- Android APK反编译(一)
- Spark调优_性能调优(一)
- Huawei vlan 配置及vlan 间通讯
- C语言:值传递,地址传递和引用传递(example:值交换)
- SpringCloud 进阶之Zuul(路由网关)
- node.js入门(一)
- UISlider 设置增量
- 关于webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示
- 文件操作 - 三元运算/chardet/文件操作r w/文件的操作方法
- [转载]有经验的Java开发者和架构师容易犯的10个错误
- js 使用中一些需要提醒的点
- Page_Load事件与IsPostBack属性