有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android PipedOutStream/PipedInputStream逐字节传输似乎是错误的

PipedoutpStream的Android实现

write(byte[] buffer, int offset, int count) 

以写入方式实现(字节一字节)。 更具体的是PipedOutputStream

write(byte[] buffer, int offset, int count)

通过在 字节[]缓冲区 并为每个字节调用write(字节一字节)。见this

这样做会导致对PipedInputStream的每个字节进行接收调用。此receive会导致notifyAll,从而唤醒读卡器并使其读取。通过这种方式可以读取大量的单字节数据

我可以看出这是一个正确的实现,但速度很慢。 是否有某种Java约定在某种程度上导致了这种错误?因为数组在PipedOutputStream上的写入现在与对PipedInputStream的通知交织在一起

write[abc]导致write(a)notify write(b)notify write(c)notify


共 (1) 个答案

  1. # 1 楼答案

    是的,您链接的代码似乎暗示它使用默认的OutputStream实现按原样发送每个byte。据我所知,这个实际上是正确的,但可能效率很低