java io之管道流

  一、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();

    }

}

 

posted @ 2017-12-05 17:21  小不点丶  阅读(226)  评论(0编辑  收藏  举报