Java IO管道流
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream; public class Test4 { 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(); // 输出结果:读到: 一个美女。。
/** 可能结果
* ReadThread读取数据,没有数据阻塞
* WriteThread开始写入数据,等待6秒后
* WriteThread写入内容结束
* ReadThread读到数据,阻塞结束
* ReadThread读到: 一个美女。。
*/
}
} // 读取数据的线程
class ReadThread implements Runnable {
private PipedInputStream pin;// 输入管道 public ReadThread(PipedInputStream pin) {
this.pin = pin;
} @Override
public void run() {
try {
byte[] buf = new byte[1024]; System.out.println("ReadThread读取数据,没有数据阻塞");
int len = pin.read(buf);// read阻塞
System.out.println("ReadThread读到数据,阻塞结束"); String s = new String(buf, 0, len);
System.out.println("ReadThread读到: " + 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 {
System.out.println("WriteThread开始写入数据,等待6秒后");
Thread.sleep(6000);
pout.write("一个美女。。".getBytes());// 管道输出流
pout.close();
System.out.println("WriteThread写入内容结束");
} catch (Exception e) {
e.printStackTrace();
}
}// run
}// WriteThread
Java IO管道流的更多相关文章
- java IO 管道流PipedOutputStream/PipedInputStream
详情:管道流的具体实现 import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputS ...
- Java IO: 字符流的Piped和CharArray
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...
- Java IO: 管道
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为 ...
- Java Io 字符流
Java Io 字符流包含: 1. InputStreamReader 它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite 它是char流到byt ...
- Java IO 嵌套流、文本的输入输出和存储
Java IO 嵌套流.文本的输入输出和存储 @author ixenos 1. 组合流过滤器(嵌套流) a) 跨平台文件分割符:常量字符串 java.io.File.seperator 等 ...
- Java IO 转换流 字节转字符流
Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...
- Java IO 过滤流 BufferedInput/OutputStream
Java IO 过滤流 BufferedInput/OutputStream @author ixenos 概念 BufferedInput/OutputStream是实现缓存的过滤流,他们分别是Fi ...
- Java IO 节点流 FileInput/OutputStream
Java IO 节点流 FileInput/OutputStream @author ixenos 节点流之 文件流 文件读写是最常见的I/O操作,通过文件流来连接磁盘文件,读写文件内容 1.文件的读 ...
- Java IO 理解流的概念
Java IO 理解流的概念 @author ixenos 在理解流时首先理解以下概念 1.流的来源和去向一般在构造器指出 2.方法中的形参一般是将流输出到某个位置,读取(INPUT)流从流读出数据( ...
随机推荐
- windows cmd下列出当前目录下的所有文件
使用的命令是dir 如,列出当前目录下的目录及文件名到1.txt: dir /b >1.txt 只列出某类文件 dir *.txt /b >1.txt
- 2.将多个元素设置为同一行?清除浮动有几种方式?【HTML】
1.将多个元素设置为同一行:float,inline-block 清除浮动的方式: 方法一:添加新的元素 .应用 clear:both: 方法二:父级div定义 overflow: hidden: 方 ...
- UI5-技术篇-Hybrid App-3-Fiori 百度地图应用
上一次在Jsbin中测试了百度地图应用:UI5-技术篇-Hybrid App-3-jsbin百度地图 ,主要思路:1.加载百度API 2.自定义控件 3.div标签加载地图,本文主要将相关实施过程 ...
- jenkins 启动
docker pull jenkinsci/blueocean docker run \ -u root \ --rm \ -d \ -p 8888:8080 \ -p 50000:50000 \ - ...
- MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK(转)
1 引擎说明 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的 数据库链接(DBLINK). 要允许这个存储引擎, 当 ...
- SqlServer中-char varchar nvarchar的区别
说说nvarchar和varchar的区别:的区别: varchar: 可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化 ...
- MongoDB 3.6.1集群部署
Mongodb安装 Linux版本:CentOS release 6.9 Mongodb版本:mongodb-linux-x86_64-3.6.1.tgz 示例是在一台主机上安装mongodb集群 端 ...
- 微信支付接口--支付成功的回调--超详细Demo
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 写 ...
- PHP-5.6.8 源码包编译安装
一.下载源码包后,进行解压 [root@www home]# .tar.bz2 gzip: stdin: not in gzip format tar: Error is not recoverabl ...
- 剑指Offer(三十三):丑数
剑指Offer(三十三):丑数 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu_31 ...