我是靠谱客的博主 尊敬小猫咪,最近开发中收集的这篇文章主要介绍黑马程序员_IO流_管道输入流PipedInputStream和管道输出流PipedOutputStream,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
-------android培训、java培训、期待与您交流! ----------
PipedInputStream类与PipedOutputStream类
PipedOutputStream可以向管道中写入数据,PipedIntputStream可以读取PipedOutputStream向管道中写入的数据.这两个类主要用来完成线程之间的通信.一个线程的PipedInputStream对象能够从另外一个线程的PipedOutputStream对象中读取数据,使用这组I/O流必须在多线程环境下.
实现原理:
PipedInputStream和PipedOutputStream的实现原理类似于"生产者-消费者"原理,PipedOutputStream是生产者,PipedInputStream
是消费者,在PipedInputStream中有一个buffer字节数组,默认大小为1024,作为缓冲区,存放"生产者"生产出来的产品.
/*
PipedOutputStream与PipedInputStream应用
Strawberry2013-5-5
*/
import java.io.*;
class PipedDemo
{
public static void main(String[] args) throws Exception
{
PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream();
out.connect(in); //管道连接一起
Write w = new Write(out);
Read r = new Read(in);
new Thread(w).start();
new Thread(r).start();
}
}
class Write implements Runnable //可以理解为生产者
{
private PipedOutputStream out;
Write(PipedOutputStream out)
{
this.out = out;
}
public void run()
{
try
{
out.write("my~~".getBytes()); //向管道中写入数据,应为字节型
out.close();
}
catch (IOException e)
{
throw new RuntimeException("error1!");
}
}
}
class Read implements Runnable //可以理解为消费者
{
private PipedInputStream in;
Read(PipedInputStream in)
{
this.in = in;
}
public void run()
{
try
{
byte[] bt = new byte[1024];
int len = in.read(bt); //在管道中读取数据
System.out.println(new String(bt, 0, len));
}
catch (IOException e)
{
throw new RuntimeException("error2!");
}
}
}
最后
以上就是尊敬小猫咪为你收集整理的黑马程序员_IO流_管道输入流PipedInputStream和管道输出流PipedOutputStream的全部内容,希望文章能够帮你解决黑马程序员_IO流_管道输入流PipedInputStream和管道输出流PipedOutputStream所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复