首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java DataInputStream与BufferedInputStream

Java DataInputStream与BufferedInputStream
EN

Stack Overflow用户
提问于 2012-06-16 03:52:43
回答 2查看 2K关注 0票数 3

我正在寻找一种有效的解决方案来接收和处理来自到服务器的套接字连接的异步消息(大小不同)。这是一个很好的带宽量(可能是250 kB/s的稳定状态,并且可以有高达1 MB/s的短突发)。目前我正在使用DataInputStream,但在繁忙的时候我会断开连接(如果队列积压变得太大,服务器会断开与客户端的连接)。

有没有人能确认一下,BufferedInputStream是否可以工作得更好?我读到它将一次检索数据块,而不是逐个字节,因此操作系统调用更少。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-16 03:58:05

它确实可以一次检索块,而且它可以减少操作系统调用,但如果您调用read的速度不足以处理积压,这将没有任何帮助。它不会读取下一个块,直到您完全读完它预取的块。

也许最好的做法是始终保持在InputStream之上(只要它有需要读取的内容就读取它),然后在以后或在另一个(优先级较低的)线程中进行任何其他处理。

票数 2
EN

Stack Overflow用户

发布于 2012-06-16 04:00:16

我不是专家,但我知道BufferedInputStream实际上会一次读取一个块,因为它将使用一个X字节大小的缓冲区。它本质上是通过套接字读取数据的抽象,而不是像您所说的那样让它使用系统调用。这可能有助于解决断开连接的问题。如果我重复了你的一些观点,很抱歉。基本上,我建议使用缓冲流。它更受控制,几次谷歌搜索会让你有更好的洞察力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11057321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档