Java PipedOutputStream类
定义
public PipedOutputStream() public PipedOutputStream(PipedInputStream snk)
参数
snk:要连接的管道输入流。
异常
IOException:I/O错误
方法
//将指定的字节写入管道输出流。 public void write(int b) public void write(byte[] b,int off,int len)
将指定的字节写入此字节数组输出流,此方法继承于OutputStream,可以参考OutputStream.write
PipedOutputStream.connect将此管道输出流连接到接收器
//关闭流 public void close() public void flush()
例子
class Write implements Runnable { private PipedOutputStream out; Write(PipedOutputStream out) { this.out = out; } public void run() { try { Thread.sleep(1000); out.write("hello www.51gjie.com".getBytes()); out.close(); } catch(Exception e) {} } } class Read implements Runnable { private PipedInputStream in ; Read(PipedInputStream in ) { this.in = in ; } public void run() { try { byte[] buf = new byte[1024]; int len = in .read(buf); String s = new String(buf, 0, len); System.out.println("读取到的数据:" + s); in .close(); } catch(IOException e) {} } } public static void main(String[] args) { PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(); in.connect(out); // 管道连接 Read r = new Read( in ); Write w = new Write(out); // 开启线程 new Thread(r).start(); new Thread(w).start(); }
1. in 是输入的位置,out是已经读出去的位置值,读取和写入是多个线程处理的。如果in<out:代表输入值从out到尾端的值还没读出,0到in的位置也还没读出;如果in>out:代表还有out-in的值没有读取如果in==out :代表没有空间,所有空间都写完了。
2. 一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进行连接而产生一个通信管道.PipedOutputStream可以向管道中写入数据,PipedIntputStream可以读取PipedOutputStream向管道中写入的数据.这两个类主要用来完成线程之间的通信.
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。