FileDesciptorの.sync()メソッドでjavadocを読むと、sync()は主に、変更されたバッファを元のストレージにコミットすることに関係していることが明らかです。つまり、あなたのプログラムがの出力であるを実際にディスク(またはソケットまたはwhat-have-youですが、私の質問は主にディスクに関係します)にすることを確認してください。JavaのFileDescriptor .sync()の読み込み*ファイルの読み込み
しかし、他の方向については、INPUTはどうですか?私のプログラムがメモリにバッファされたjava.io.RandomAccessFileのいくつかの部分を持っていて、ファイルのそれらの部分を読みたいと思いますが、私のプログラムがそれらのブロックを最後に読み込んだので、
これは、Cプログラムで変数を 'volatile'としてマークするのと同じですが、他の何かが単にあなたの便利なコピーを持っているものの「本物の版」を変えたかもしれません。
私は、あなたのJavaプログラムが読んでいるものが少なくとも合理的に最新のものであることをどのように確かめることができますか?
(明らかに、「最新のもの」の定義。例として、純粋に例として、1秒に1回のオーダーで他のプロセスがファイルに書き込むと仮定します。このような状況では、パフォーマンスはそれほど重要ではありません。読者が読んだものが、書込みが何秒間に何回書いたものであるかを確認することの問題です。
「ファイルが更新されたときに私に尋ねる」というものはありませんか? – Pacerier
Java 7まではありません。詳細は別の質問をご覧ください:http://stackoverflow.com/a/494886/57601 – Kosi2801