堕落三昧

日々のあれこれを徒然なるままに書き連ねるブログです。

【覚え書き】ファイルのロック【java】

ファイルロックをしたくなった訳

研究でシミュレーションを行うときに、サーバで並列処理でシミュレーションを行う。
その時にシミュレーション結果を出力するファイルへの書き込みが同時に行われ、変なデータが書き込まれる時が稀にある。

それが生じると、実行回数にずれが生じるし、手動で修正するのも面倒...。
データの書き込み時に、ファイルを開く際に、他のプロセスからそのファイルを開けないようにロックをしたい。(排他ロック)

現状

javaで普通にファイルを開く(open関数を使用する)と、ファイルは共有ロックで開かれるようである。共有ロックは他のプロセスからのアクセスは禁止していないため、上記の同時書き込みが生じるようだ。

解決方法

少し調べたらjavaにはFileLockというクラスがあるらしい。知らなかった。きっとこれを使用すれば上手く処理できるはず...。

時間があるときにシミュレーションプログラムに実装したい。