FileInputStream i FileOutputStream do tego samego pliku: Czy read () gwarantuje, że wszystkie zapisy () s, które „zdarzyły się wcześniej”?

Używam pliku jako pamięci podręcznej dla dużych danych. Jeden wątek zapisuje go sekwencyjnie, inny wątek odczytuje go sekwencyjnie.

Czy mogę być pewien, że wszystkie zapisane dane (wgwrite()) w jednym wątku może byćread() z innego wątku, zakładając właściwą relację „dzieje się przed” w odniesieniu do modelu pamięci Java? Czy to zachowanie jest udokumentowane?

W moim JDK,FileOutputStream nie zastępujeflush(), iOutputStream.flush() jest pusty. Dlatego się zastanawiam ...

Te strumienie są własnością wyłącznie klasy, nad którą mam pełną kontrolę. Każdy strumień ma zagwarantowany dostęp tylko przez jeden wątek. Moje testy pokazują, że działa zgodnie z oczekiwaniami, ale wciąż zastanawiam się, czy jest to zagwarantowane i udokumentowane.

Zobacz teżta pokrewna dyskusja.

questionAnswers(4)

yourAnswerToTheQuestion