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.