一、java.io中存在一中流叫管道流,类似管道的功能。PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流。这个两个流必须同时使用。

  二、作用:进行两个线程间的通信。一个线程作为管道输出流,另一个线程作为管道输入流,在启动线程前,只需要将这两个线程的管道流连接到一起就可以。 这要就很方便的实现了两个线程间的通信。

  三、例子(我这里谢了一个简单的例子。来说明不同线程之间的读写情况)

import java.io.PipedInputStream;import java.io.PipedOutputStream;public class PipeStream {    //管道输出流    private static PipedOutputStream outputStream = new PipedOutputStream();    //管道输入流    private static PipedInputStream inputStream = new PipedInputStream();    public static void main(String[] args) throws Exception {        //输出线程        Runnable out = ()-> {            try {                while(true) {                    Thread.sleep(1000);                    outputStream.write("pipe".getBytes());                }            } catch (Exception e) {                e.printStackTrace();            }        };        //输入线程        Runnable in = ()-> {            try {                byte[] bytes = new byte [1024];                int len;                while ((len = inputStream.read(bytes)) != -1) {                    System.out.println(new String(bytes,0,len));                }            } catch (Exception e) {                e.printStackTrace();            }        };        //连接管道        inputStream.connect(outputStream);        //启动线程        new Thread(out).start();        new Thread(in).start();    }}

 

收藏 打印