Java I/O系统是建立在数据流概念之上的,而在UNIX/Linux中有一个类似的概念,就是管道,它具有将一个程序的输出当作另一个程序的输入的能力。在Java中,可以使用管道流进行线程之间的通信,输入流和输出流必须相连接,这样的通信有别于一般的Shared Data通信,其不需要一个共享的数据空间。
package lesson.io.test; import java.io.*; public class TestPiped { public static void main(String[] args) { Sender sender = new Sender(); Recive recive = new Recive(); PipedInputStream pi=recive.getPipedInputputStream(); PipedOutputStream po=sender.getPipedOutputStream(); try { pi.connect(po); } catch (IOException e) { System.out.println(e.getMessage()); } sender.start(); recive.start(); } } class Sender extends Thread { PipedOutputStream out = null; public PipedOutputStream getPipedOutputStream() { out = new PipedOutputStream(); return out; } @Override public void run() { try { out.write("Hello , Reciver!".getBytes()); } catch (IOException e) { System.out.println(e.getMessage()); } try { out.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } class Recive extends Thread { PipedInputStream in = null; public PipedInputStream getPipedInputputStream() { in = new PipedInputStream(); return in; } @Override public void run() { byte[] bys = new byte[1024]; try { in.read(bys); System.out.println("读取到的信息:" + new String(bys).trim()); in.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } }