这篇文章将为大家详细讲解有关PipedReader与PipedWriter有哪些不同的地方,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
PipedWriter与PipedReader的区别
1. PipedWriter 源码
package java.io; public class PipedWriter extends Writer { // 与PipedWriter通信的PipedReader对象 private PipedReader sink; // PipedWriter的关闭标记 private boolean closed = false; // 构造函数,指定配对的PipedReader public PipedWriter(PipedReader snk) throws IOException { connect(snk); } // 构造函数 public PipedWriter() { } // 将“PipedWriter” 和 “PipedReader”连接。 public synchronized void connect(PipedReader snk) throws IOException { if (snk == null) { throw new NullPointerException(); } else if (sink != null || snk.connected) { throw new IOException("Already connected"); } else if (snk.closedByReader || closed) { throw new IOException("Pipe closed"); } sink = snk; snk.in = -1; snk.out = 0; // 设置“PipedReader”和“PipedWriter”为已连接状态 // connected是PipedReader中定义的,用于表示“PipedReader和PipedWriter”是否已经连接 snk.connected = true; } // 将一个字符c写入“PipedWriter”中。 // 将c写入“PipedWriter”之后,它会将c传输给“PipedReader” public void write(int c) throws IOException { if (sink == null) { throw new IOException("Pipe not connected"); } sink.receive(c); } // 将字符数组b写入“PipedWriter”中。 // 将数组b写入“PipedWriter”之后,它会将其传输给“PipedReader” public void write(char cbuf[], int off, int len) throws IOException { if (sink == null) { throw new IOException("Pipe not connected"); } else if ((off | len | (off + len) | (cbuf.length - (off + len))) < ) { throw new IndexOutOfBoundsException(); } sink.receive(cbuf, off, len); } // 清空“PipedWriter”。 // 这里会调用“PipedReader”的notifyAll(); // 目的是让“PipedReader”放弃对当前资源的占有,让其它的等待线程(等待读取PipedWriter的线程)读取“PipedWriter”的值。 public synchronized void flush() throws IOException { if (sink != null) { if (sink.closedByReader || closed) { throw new IOException("Pipe closed"); } synchronized (sink) { sink.notifyAll(); } } } // 关闭“PipedWriter”。 // 关闭之后,会调用receivedLast()通知“PipedReader”它已经关闭。 public void close() throws IOException { closed = true; if (sink != null) { sink.receivedLast(); } } }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机PipedReader与PipedWriter有哪些不同的地方
后端开发2023-05-31
Log4j与Log4j2有哪些不同的地方
后端开发2023-05-31
classpath与path有哪些不同的地方
后端开发2023-05-31
ConcurrentHashMap与HashMap有哪些不同地方
后端开发2023-05-31
Kotlin语法 与 Java语法有哪些不同的地方
后端开发2023-05-31
DetachedCriteria与Criteria的用方有哪些不同
后端开发2023-05-31
nodejs与swoole的不同点有哪些
后端开发2023-06-29
Java与JavaScript有哪些不同点
后端开发2023-06-03
Java与C#的不同之处有哪些
后端开发2023-06-17
java与JavaScript的不同之处有哪些
后端开发2024-04-02
Node的CJS与ESM有哪些不同点
后端开发2024-04-02
win10与win11系统有什么不同的地方
后端开发2023-07-10
php与c++不同之处有哪些
后端开发2018-04-18
php与c++不同之处有哪些
后端开发2024-04-25
Java中的String 与 new String()有什么不同的地方
后端开发2023-05-31
MySQL GTID与MariaDB GTID的不同之处有哪些
后端开发2024-04-02
ASP和Apache的日志同步方案有哪些不同?
后端开发2023-10-01
Git 与 Java 的同步编程算法:有哪些值得注意的地方?
后端开发2023-09-25
Python中CST 和AST类有哪些相同的地方
后端开发2023-06-17
咦!没有更多了?去看看其它编程学习网 内容吧