0

我正在做一个应用程序,它意味着读取大量发送到我的套接字的数据。

我遇到的问题是我是否应该依赖套接字 setReceiveBufferSize,在那里放一个很大的值以希望它会收集我拥有的所有数据,直到我能够处理它,或者使用 BlockingQueue 将所有东西放在那里然后从另一个保持汇集和处理数据的线程处理它?

如果我让最大数量的元素排队,这也是一个糟糕的设计吗?(所以我只是告诉它,“是的,你想接收多少元素就接收多少元素”),我指的是如果我将接收大量元素时的内存消耗?

问候, 奥勒良

4

1 回答 1

0

一个大的套接字接收缓冲区总是一个好主意,但出于 TCP 窗口/吞吐量的原因,而不是因为您可能阅读速度很慢。您的目标应该是尽可能快地读取输入,当然要尽可能快地到达。提议的 BlockingQueue 完全是浪费时间和空间。如果套接字接收缓冲区填满,发送方将停止。这就是你所需要的。

于 2013-08-25T12:06:16.290 回答