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原创文章,未经本站允许不得转载。