【发布时间】:2011-07-06 08:14:12
【问题描述】:
PipedOutputStream的Android实现
write(byte[] buffer, int offset, int count)
是根据 write(byte oneByte) 来实现的。 更具体的 PipedOutputStream
write(byte[] buffer, int offset, int count)
是通过循环来实现的 字节[] 缓冲区 并为每个字节调用 write(byte oneByte)。见this。
以这种方式执行此操作会导致每个字节都在 PipedInputStream 上进行接收调用。此接收会导致 notifyAll 唤醒阅读器并使其阅读。通过这种方式,您可以读取很多单字节。
我可以看到这是一个正确的实现,但速度很慢。 是否有一些 Java 约定在某种程度上造成了这种错误?因为 PipedOutputStream 上的数组写入现在与 PipedInputStream 的通知交错。
write [a b c] 导致 write(a) notify write(b) notify write(c) notify.
【问题讨论】:
标签: java android inputstream outputstream