我正在异步获取未知数量的ByteBuffer(它们通过网络发送).每个都包含一部分数据,它们以正确的顺序到达.我想重新组装它们,并将重新联合的数据传递给处理程序.但是,在最后一个到达之前,它们不能保存在内存中,因为它可以是许多兆字节.
因此,我的 idea 是,将InputStream
传递给该数据的处理程序,处理程序可以从该处理程序中连续读取数据并进行动态处理,例如写入磁盘.由于InputStream
不能写入,我可以使用PipedOutputStream
,并将其连接到PipedInputStream
.不过,这涉及到大量的复制(PipedInputStream
有自己的缓冲区,然后通过复制到数组来再次读取),所以我担心性能.
这是个好主意吗?我是否应该使用不同于流的技术,例如频道?