考虑到一个简单的网络通信场景,其中客户端一次从一个对象中“抽取”服务器中的数据,那么最大程度地减少缓冲区不足的最佳方法是什么?
一个典型的用例是单个生产者/消费者连接,其中客户端应用程序通过Java SDK向数据库服务器提交查询,并获取results iterator
(光标)对象作为查询的返回值
在理想的网络条件下,连续调用迭代器的next()
方法足以及时检索所有查询结果。但是,如果连接的响应时间有所不同(例如,由于服务器或网络拥塞所致),则对next()
方法的调用将间歇性返回,甚至阻塞更长的时间。
使用队列(例如,Java
BlockingQueue
)在读取结果之前(即,在调用next()
方法之前)写入了许多对象的队列,可以消除这种延迟差异。有没有更合适的方法?