У меня есть входной поток, поступающий из черного ящика (скажем, B). Все сообщения, поступающие из этого потока, являются сериализованными двоичными данными, и каждое сообщение начинается с четырехбайтового числа int. Большая часть данных регистрируется и работает 24 часа в сутки. Я прочитал эти четыре байта, используя метод readInt (). Теперь, иногда, основной поток завершает работу с EOFException и завершает работу программы.
После исследования этого я обнаружил, что это происходит, когда во входном потоке во время readInt () меньше четырех байтов. Я предполагаю, что буфер не заполняется достаточно быстро между последовательными чтениями. Некоторые из возможных решений, о которых я думаю, включают проверку доступности () перед чтением (занимает слишком много циклов, учитывая количество данных) или перезапуск при возникновении исключения (звучит как плохое программирование). Думаю, если бы я мог заблокировать использование readInt (), это был бы лучший способ. Я посмотрел на реализацию readInt (), но опять-таки все сводится к блокировке с read ().
Кто-нибудь знает лучшее решение?