FileInputStream e FileOutputStream para o mesmo arquivo: É um read () garantido para ver todos write () s que "aconteceu antes"?

Eu estou usando um arquivo como um cache para big data. Um thread grava nele sequencialmente, outro thread o lê sequencialmente.

Posso ter certeza de que todos os dados que foram gravados (porwrite()) em um segmento pode serread() de outro thread, assumindo um bom relacionamento "acontece antes" em termos do modelo de memória Java? Esse comportamento é documentado?

No meu JDK,FileOutputStream não anulaflush()eOutputStream.flush() está vazia. É por isso que estou me perguntando ...

Os fluxos em questão são de propriedade exclusiva de uma classe da qual tenho controle total. Cada fluxo é garantido para ser acessado por um único segmento. Meus testes mostram que funciona como esperado, mas ainda estou me perguntando se isso é garantido e documentado.

Veja tambémesta discussão relacionada.

questionAnswers(4)

yourAnswerToTheQuestion