FileInputStream и FileOutputStream в один и тот же файл: гарантированно ли чтение () видеть все записи (), которые «происходили раньше»?
Я использую файл в качестве кэша для больших данных. Один поток пишет в него последовательно, другой поток читает его последовательно.
Могу ли я быть уверен, что все данные, которые были записаны (write()
в одну ветку можноread()
из другого потока, предполагая, что «произойдет до того» отношения с точки зрения модели памяти Java? Это поведение задокументировано?
В моем JDK,FileOutputStream
не переопределяетflush()
, а такжеOutputStream.flush()
пустой. Вот почему мне интересно ...
Рассматриваемые потоки принадлежат исключительно классу, который я полностью контролирую. Каждый поток гарантированно будет доступен только одному потоку. Мои тесты показывают, что он работает, как и ожидалось, но мне все еще интересно, гарантировано ли это и задокументировано ли это.
Смотрите такжеэто связанное обсуждение.