【覚え書き】ファイルのロック【java】
ファイルロックをしたくなった訳
研究でシミュレーションを行うときに、サーバで並列処理でシミュレーションを行う。
その時にシミュレーション結果を出力するファイルへの書き込みが同時に行われ、変なデータが書き込まれる時が稀にある。
それが生じると、実行回数にずれが生じるし、手動で修正するのも面倒...。
データの書き込み時に、ファイルを開く際に、他のプロセスからそのファイルを開けないようにロックをしたい。(排他ロック)
現状
javaで普通にファイルを開く(open関数を使用する)と、ファイルは共有ロックで開かれるようである。共有ロックは他のプロセスからのアクセスは禁止していないため、上記の同時書き込みが生じるようだ。
解決方法
少し調べたらjavaにはFileLockというクラスがあるらしい。知らなかった。きっとこれを使用すれば上手く処理できるはず...。
- クラスFileLockの詳細 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/nio/channels/FileLock.html
- java ファイルロック使用例 http://inside.ascade.co.jp/node/35
時間があるときにシミュレーションプログラムに実装したい。