FileChannel.lock() を使用した Java での排他的アクセスのためのファイルのロック
複数の Java プロセスが同時にアクセスする必要があるシナリオが発生した場合ファイルの場合、ファイルの同時変更やアクセスを防ぐことが不可欠になります。幸いなことに、Java プラットフォームには、FileChannel.lock() を使用してこれを実現するメカニズムが用意されています。
ロックの実装
排他的アクセスのためにファイルをロックするには、次のコード スニペットを利用できます:
try ( FileInputStream in = new FileInputStream(file); java.nio.channels.FileLock lock = in.getChannel().lock(); Reader reader = new InputStreamReader(in, charset) ) { // Perform operations on the file }
FileInputStream オブジェクトはファイルへの接続を確立します。後続の getChannel() の呼び出しでは、ファイルに関連付けられたチャネルが返されます。 FileChannel には、ファイルの排他ロックを取得する lock() など、ファイルを操作するためのメソッドが用意されています。
ファイル アクセスへの影響
ファイルがロックされるとFileChannel.lock() を使用すると、別のプロセスが同じファイルのロックを取得しようとすると、例外が発生します。同時ファイル アクセスへの影響は次のとおりです:
プラットフォームに関する考慮事項
FileChannel.lock の動作に注意してください。 () は、プラットフォームの依存関係により、オペレーティング システムによって異なる場合があります。ターゲット プラットフォームに関する具体的な情報については、公式 API ドキュメントを参照してください。
以上がJava の「FileChannel.lock()」はどのようにして同時ファイルアクセスの競合を防ぐことができるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。