A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李娟 黑马帝   /  2011-12-20 14:24  /  2127 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李娟 于 2011-12-22 09:22 编辑

管道流和缓冲区的区别是什么?在什么情况下管道流可以替代缓冲区?

4 个回复

正序浏览
刘健 黑马帝 2011-12-20 21:54:11
报纸
管道流的缓冲区是存在固定大小的,在数据传输速度超过一定范围的时候就显示出他的不足了。所以管道流一般用于少量数据的传输
回复 使用道具 举报
     管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。java.io中提供了
PipedInputStream和PipedOutputStream作为管道的输入/输出流管道输入流作为一个通信管道的接收端,
管道输出流则作为发送端。管道流必须是输入输出并用,即在使用管道前,两者必须进行连接。管道流的重
点在于连接。而缓冲区是对数据的缓存,提高数据的读写效率。作用的重点是提高效率。
回复 使用道具 举报
PipedInputStream运用的是一个1024字节固定大小的循环缓冲区,写入PipedInputStream的数据实际上保存到对应的PipedInputStream的内部缓冲区。从PipedInputStream执行读操作时,读取的数据实际上来自这个内部缓冲区,如果对应的PipedInputStream输入缓冲区已满,任何企图写入PipedInputStream的线程都将被阻塞,而且这个写操作线程将一直阻塞,直至出现读取PipedInputStream的操作从缓冲区删除数据。
回复 使用道具 举报
管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。两者不是同一类型的对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马