FileInputStream y FileOutputStream en el mismo archivo: ¿Se garantiza que una lectura () vea todas las escrituras () que "sucedieron antes"?

Estoy usando un archivo como caché para big data. Un hilo lo escribe secuencialmente, otro hilo lo lee secuencialmente.

¿Puedo estar seguro de que todos los datos que se han escritowrite()) en un hilo puede serread() ¿De otro hilo, asumiendo una relación correcta de "sucede antes de" en términos del modelo de memoria de Java? ¿Está documentado este comportamiento?

En mi JDK,FileOutputStream no anulaflush()yOutputStream.flush() esta vacio. Por eso me pregunto ...

Los flujos en cuestión son propiedad exclusiva de una clase de la que tengo control total. Cada flujo está garantizado para ser accedido por un solo hilo. Mis pruebas muestran que funciona como se esperaba, pero todavía me pregunto si esto está garantizado y documentado.

Ver tambiénesta discusión relacionada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta