PipedOutputStream的Android实现
write(byte[] buffer, int offset, int count)
以write(byte oneByte)实现。 更具体的是PipedOutputStream
write(byte[] buffer, int offset, int count)
通过循环实现 byte []缓冲区 并为每个字节调用write(byte oneByte)。请参阅this。
以这种方式执行此操作会导致在PipedInputStream上为每个字节进行接收调用。这种接收会产生一个notifyAll,它会唤醒读者并使其读取。你会以这种方式获得大量的一个字节读取。
我可以看到它是一个正确的实现,但速度很慢。 可能有一些Java约定以某种方式使这个错误?因为现在PipedOutputStream上的数组写入与PipedInputStream通知交错。
写[a b c]结果写(a)通知写(b)通知写(c)通知。
答案 0 :(得分:0)
是的,您链接的代码似乎暗示它使用OutputStream
的默认实现来按原样发送每个byte
。据我所知,这个 实际上是正确的,但可能效率很低。