Java IO _管道流

来源:互联网 发布:公务员考试网络课程 编辑:程序博客网 时间:2024/05/17 04:41

掌握线程通讯流(管道流)的使用


要想实现管道流,则可以使用PipedOutputStream 和 PipedInputStream.

 public void connect(PipedInputStream snk) throws IOException

如果要连接输入和输出,则就必须使用此方法。

import java.io.* ;class Send implements Runnable{// 线程类private PipedOutputStream pos = null ;// 管道输出流public Send(){this.pos = new PipedOutputStream() ;// 实例化输出流}public void run(){String str = "Hello World!!!" ;// 要输出的内容try{this.pos.write(str.getBytes()) ;}catch(IOException e){e.printStackTrace() ;}try{this.pos.close() ;}catch(IOException e){e.printStackTrace() ;}}public PipedOutputStream getPos(){// 得到此线程的管道输出流return this.pos ;}};class Receive implements Runnable{private PipedInputStream pis = null ;// 管道输入流public Receive(){this.pis = new PipedInputStream() ;// 实例化输入流}public void run(){byte b[] = new byte[1024] ;// 接收内容int len = 0 ;try{len = this.pis.read(b) ;// 读取内容}catch(IOException e){e.printStackTrace() ;}try{this.pis.close() ;// 关闭}catch(IOException e){e.printStackTrace() ;}System.out.println("接收的内容为:" + new String(b,0,len)) ;}public PipedInputStream getPis(){return this.pis ;}};public class PipedDemo{public static void main(String args[]){Send s = new Send() ;Receive r = new Receive() ;try{s.getPos().connect(r.getPis()) ;// 连接管道}catch(IOException e){e.printStackTrace() ;}new Thread(s).start() ;// 启动线程new Thread(r).start() ;// 启动线程}};
总结:

1、在JAVA开发中很少直接去开发多线程程序,本道程序,只是让读者加深一下读写的操作过程,了解线程间是如何通讯的。