转自:
下文讲述java中PipedReader类简介说明,如下所示:
PipedReader是字符管道输入流,它继承于Writer
PipedReader的功能:
用于读取对应绑定的管道字符输出流写入其内置字符缓存数组buffer中的字符、借此来实现线程之间的通信
PipedReader中有两个方法供PipedWriter调用、receive(char c)、receive(char[] b, int off, intlen)
使得PipedWriter可以将字符或者字符数组写入PipedReader的buffer中
PipedReader类的构造函数
PipedReader(PipedWriter src) 使用默认的buf的大小和传入的PipedWriter构造PipedReader PipedReader(PipedWriter src, int pipeSize) 使用指定的buf的大小和传入的pw构造PipedReader PipedReader() 使用默认大小构造PipedReader PipedReader(int pipeSize) 使用指定大小构造PipedReader
PipedReader类的关键字
boolean closedByWriter = false; 标记PipedWriter是否关闭 boolean closedByReader = false; 标记PipedReader是否关闭 boolean connected = false; 标记PipedWriter与标记PipedReader是否关闭的连接是否关闭 Thread readSide; 拥有PipedReader的线程 Thread writeSide; 拥有PipedWriter的线程 private static final int DEFAULT_PIPE_SIZE = 1024; 用于循环存放PipedWriter写入的字符数组的默认大小 char buffer[]; 用于循环存放PipedWriter写入的字符数组 int in = -1; buf中下一个存放PipedWriter调用此PipedReader的receive(int c)时、c在buf中存放的位置的下标。此为初始状态、即buf中没有字符 int out = 0; buf中下一个被读取的字符的下标
PipedReader类的方法
void close() 清空buf中数据、关闭此流。 |
void connect(PipedWriter src) 调用与此流绑定的PipedWriter的connect方法、将此流与对应的PipedWriter绑定 |
synchronized boolean ready() 查看此流是否可读 |
synchronized int read() 从buf中读取一个字符、以整数形式返回 |
synchronized int read(char cbuf[], int off, int len) 将buf中读取一部分字符到cbuf中 |
synchronized void receive(int c) PipedWriter调用此流的此方法、向PipedReader的buf以整数形式中写入一个字符 |
synchronized void receive(char c[], int off, int len) 将c中一部分字符写入到buf中 |
synchronized void receivedLast() 提醒所有等待的线程、已经接收到了最后一个字符 |