EOS достигнуто, когда два потока читают из datainputstream

Я пишу программу, где программа создает поток, который, в свою очередь, читает из сокета, моя проблема в том, что когда создаются два потока, оба читают из потока данных. Один поток читает правильно, в то время как другой встречает EOS и возвращает -1 при чтении байтов. я синхронизировал мой метод бега

2 ответа

Должно быть потому, что первый поток читает поток до EOF. Что является ожидаемым поведением. Если вы хотите разделить чтение, например, поменять местами считыватели после 100 байт, используйте read(byte[] b, int off, int len), в противном случае прочитайте данные из одного потока, а затем поделитесь ими.

То, что ты делаешь, не имеет смысла. Вы не можете читать поток дважды, последовательно или одновременно. В этом случае, если поток A читает первый байт, поток B не может прочитать первый байт. Если поток A читает все байты, поток B не может прочитать ни один из них.

Другие вопросы по тегам