1

flock() を使用して Linux でファイルをロックできることは知っています。ただし、NFS ドライブはファイル ロックをサポートしていない場合があります。

どのドライブでもファイル ロックをサポートするために、Java コードにカスタム ファイル ロック ロジックを実装することを考えています。誰でも良い習慣を提案できますか?

ありがとう、

4

3 に答える 3

3

ファイルのロックは、単一のプロセスのスレッド間でロックするような狭い範囲を考えている場合を除いて、オペレーティングシステムのカーネル/ファイルシステムドライバーによって実行する必要があります。システム上の他のすべてのプロセスが、アプリケーションと通信してロック/ロック解除することを知る方法はありません。そうするように書き直さないでください。これは、NFSのように分散ロックについて考える場合、さらに重要です(ただし、ご存知のように、うまく機能しない壊れたNFS実装が多数あります)。

于 2012-09-21T20:45:44.430 に答える
2

ロックファイルとして使用する新しいファイルを自分で作成できます(以下は、Javaでカスタムファイルロックロジックを実装したいと述べたため、Javaでの例です)。

File lockFile = new File(".filelock");
if(!lockFile.exists()){
   //create lock file
   boolean success = lockFile.createNewFile();       

   //execute some logic...

   //delete lock file
   lockFile.delete();                                
}else{
   //lock file exists, cannot execute the logic that we wanted
}
于 2012-09-21T20:44:49.123 に答える