Зависит от того, как вы хранили предметы.Если вы использовали один единственный ObjectOutputStream, то лучше также использовать один единственный ObjectInputStream.
Если вы использовали отдельные потоки для вывода, вы также должны использовать отдельные потоки для ввода.Но это не очень рекомендуется.
Для вашей "постоянной очереди" я бы порекомендовал что-то вроде этого:
На отправляющей стороне:
- Создайте ByteArrayOutputStream, оберните ObjectOutputStream вокруг него.
- Запишите объект в OOS и закройте OOS.
- Получите
byte[]
и запишите его вместе с заголовком, указывающим длинув ваш поток очереди.
На принимающей стороне:
- чтение длины заголовка из потока очереди.
- чтение
byte[]
иззаданная длина из потока очереди. - создайте ByteArrayInputStream из этого массива и оберните ObjectInputStream вокруг него.
- прочитайте один объект из OIS, закройте OIS.
Когда вы храните части своей очереди, всегда сохраняйте целые сообщения (т. Е. Заголовок вместе с объектом).
Конечно, может быть проще использовать уже существующие решения, такие как JMS(где бы вы создали ObjectMessage и отправьте его в очередь).