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