[十九]JavaIO之PipedReader 和 PipedWriter详解编程语言
编程语言 详解 十九 JavaIO
2023-06-13 09:20:45 时间
我们在线程A中向PipedOutputStream中写入数据,这些数据会自动的发送到与PipedOutputStream对应的PipedInputStream中,进而存储在PipedInputStream的缓冲中;
线程B通过读取PipedInputStream中的数据
对照到我上面画的图就是这样:
我们现在看下PipedReader 和 PipedWriter的关键的成员变量
你应该可以想得到
他们的实现逻辑跟PipedInputStream和PipeOutputStream是类似的
连接之后,就形成了一个管道 (其实就是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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15600.html
c相关文章
- python算法_冒泡排序详解编程语言
- Raphaël 鼠标拖动,滚轮缩放js代码详解编程语言
- JSON字符串转换成JSON对象的JS代码详解编程语言
- Java文件读写操作具体代码实现详解编程语言
- java贪食蛇 极速不死版详解编程语言
- Nodejs真.多线程处理详解编程语言
- isupper()函数详解编程语言
- Java学习笔记之二十八深入了解Java8新特性详解编程语言
- C语言之带有返回值的函数详解编程语言
- java 排序算法详解编程语言
- 在iframe里面提交表单详解编程语言
- 说一个最简单的Lucene搜索引擎例子详解编程语言
- 关于cookie对象,大家应该了解的知识详解编程语言
- 算法-二维数组中的查找详解编程语言
- [五]java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用编程语言
- PHP是单线程还是多线程详解编程语言
- springboot添加多数据源连接池并配置Mybatis详解编程语言
- JAVA-前台编码,后台解码详解编程语言
- Java8-如何将List转变为逗号分隔的字符串详解编程语言
- 一个老话题,short s=s+1的日常详解编程语言