私はこの投稿を読みました。誰かがクラスjava.nio.FileLock.lock()
でうまくいくかどうか教えてもらえますか?java.util.Properties
質問:
読み取ったプロパティファイルにロックをかけると、他の同時ロックのためにファイルがロックされますか?コードは次のようなものをロックします:
try {
Properties prop = new Properties();
FileInputStream fis = new FileInputStream(new File("/my/path"));
FileLock lock = fis.getChannel().lock();
prop.load(fis);
} catch (FileNotFoundException e) {
//catch it...
} catch (IOException e) {
//catch it...
}
//....
lock.release();
//...
ありがとう!
JavaDocsから:
1.単一のJava仮想マシンによって特定のファイルに保持されているロックは重複しません。
と
2.a. ファイルロックは、Java仮想マシン全体に代わって保持されます。同じ仮想マシン内の複数のスレッドによるファイルへのアクセスを制御するのには適していません。
b。ファイルロックオブジェクトは、複数の同時スレッドで安全に使用できます。
関連1:同じJVMから異なるスレッドから同じファイルをロックしようとしましたが、スレッドがすでにロックされているファイルをロックしようとするとエラーがスローされます。動作はJavaDoc仕様から期待されるものではないと思います。
2 aとbに関連:それらは矛盾しているように私には思えます。私は正しいですか?そうでない場合、誰かが私にポイントを説明できますか?