ビッグデータのキャッシュとしてファイルを使用しています。1 つのスレッドが順番に書き込み、別のスレッドが順番に読み取ります。
Java メモリー・モデルに関して適切な「先行発生」関係を前提として、あるスレッドで(によってwrite()
) 書き込まれたすべてのデータが別のスレッドからのものであると確信できますか? read()
この動作は文書化されていますか?
私のJDKでは、FileOutputStream
オーバーライドせずflush()
、OutputStream.flush()
空です。だからこそ気になる…
問題のストリームは、私が完全に制御できるクラスによって独占的に所有されています。各ストリームは、1 つのスレッドのみによってアクセスされることが保証されています。私のテストでは、期待どおりに動作することが示されていますが、これが保証され、文書化されているかどうかはまだ疑問です.
この関連する議論も参照してください。