Реализация Android PipedOutputStream
write(byte[] buffer, int offset, int count)
реализована в терминах записи (байтовый один байт).Более конкретно, PipedOutputStream
write(byte[] buffer, int offset, int count)
реализован путем циклического перемещения по буферу byte [] и вызова записи (byte oneByte) для каждого байта.См. this .
. Выполнение таким образом приводит к вызову приема для PipedInputStream для каждого байта.Это получает результаты в уведомлении все, которое будит читателя и заставляет его читать.Таким образом вы получаете много прочитанных байтов.
Я вижу, что это правильная реализация, но медленная.Может быть, есть какое-то соглашение Java, которое каким-то образом делает это неправильно?Поскольку запись массива в PipedOutputStream теперь чередуется с уведомлениями PipedInputStream.
write [abc] приводит к записи (a), уведомлению, записи (b), уведомлению, записи (c), уведомлению.