Java IO _管道流

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


要想实现管道流,则可以使用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开发中很少直接去开发多线程程序,本道程序,只是让读者加深一下读写的操作过程,了解线程间是如何通讯的。












  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值