FileInputStream и FileOutputStream в один и тот же файл: гарантированно ли чтение () видеть все записи (), которые «происходили раньше»?

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

Могу ли я быть уверен, что все данные, которые были записаны (write()в одну ветку можноread() из другого потока, предполагая, что «произойдет до того» отношения с точки зрения модели памяти Java? Это поведение задокументировано?

В моем JDK,FileOutputStream не переопределяетflush(), а такжеOutputStream.flush() пустой. Вот почему мне интересно ...

Рассматриваемые потоки принадлежат исключительно классу, который я полностью контролирую. Каждый поток гарантированно будет доступен только одному потоку. Мои тесты показывают, что он работает, как и ожидалось, но мне все еще интересно, гарантировано ли это и задокументировано ли это.

Смотрите такжеэто связанное обсуждение.

Ответы на вопрос(4)

Ваш ответ на вопрос