[十九]JavaIO之PipedReader 和 PipedWriter
2018-09-18 06:35:53来源:博客园 阅读 ()
功能简介
使用管道通信时,必须将PipedOutputStream和PipedInputStream配套使用 |
大致流程: 我们在线程A中向PipedOutputStream中写入数据,这些数据会自动的发送到与PipedOutputStream对应的PipedInputStream中,进而存储在PipedInputStream的缓冲中; 线程B通过读取PipedInputStream中的数据 |
对照到我上面画的图就是这样:
|
我们现在看下PipedReader 和 PipedWriter的关键的成员变量 你应该可以想得到 他们的实现逻辑跟PipedInputStream和PipeOutputStream是类似的 |
PipedReader PipedWriter 基本原理和工作流程 |
PipedWriter中有一个 PipedReader sink成员变量
PipedReader 中有一个缓冲区char buffer[] 可以用于保存数据
他们本质上操作的都是这个缓冲区
PipedReader操作的自己的缓冲区
PipedWriter 操作的是PipedReader 的缓冲区
PipedWriter 需要和PipedReader进行连接,或者在构造的时候直接连接
连接之后,就形成了一个管道 (其实就是PipedWriter 内部可以调用PipedReader 的方法)
PipedWriter 写入的数据,可以通过PipedReader 进行读取
|
构造方法
指定缓冲区大小, 不连接
默认缓冲区大小, 不连接
指定缓冲区大小, 连接
默认缓冲区大小, 连接
|
对于PipedWriter 有两种形式 单纯的创建一个PIpedWriter 或者创建的同时一并连接到一个PipedReader |
其他方法
connect方法,根本形式只有一种 不管是PipedWriter连接PipedReader 还是 PipedReader 连接 PipedReader |
首先真正的将PipedReader和PipedWriter进行连接,也就是设置sink 然后就是设置in和out 他们是写入PipedReader中的缓冲区和从缓冲区读取的索引号 然后就是标志已经连接成功了 |
PipedWriter 提供了两个版本的write方法 写入一个字符 或者写入一些字符 从cbuf[] off偏移量开始的len个字符 public void write(int c) throws IOException public void write(char cbuf[], int off, int len) throws IOException |
看得出来,PipedReader也是有一个receive方法,用来写入缓冲区 |
PipedReader 提供了两个版本的read方法 读取一个字符 或者读取指定个数的字符数目 保存到指定的数组,到她的指定的位置 public synchronized int read() throws IOException public synchronized int read(char cbuf[], int off, int len) throws IOException |
PipedReader 提供了ready in是写入数据的下一个索引值,默认是-1 如果小于0 显然没有任何数据已经被写入,也就是PipedReader中的缓冲区中并没有数据 也就是没ready |
总结
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:剑指Offer-迭代
- JavaIO流总结 2019-10-25
- Java开发笔记(一百四十九)引入预报告的好处 2019-09-17
- Java开发笔记(一百三十九)JavaFX的输入框 2019-08-26
- javaIO——概述 2019-08-16
- Java开发笔记(一百二十九)Swing的输入框 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash