FileLock.lockは、ファイルのロック権限を取得するメソッドです。
このFileLock.lockメソッド、
ロック権限が取得できない場合、
ロック権限が取得できるまで、
ずっと待ちの状態になります。
もし、なんらかの理由で、ファイルのロック権限が
残ってしまった場合のことを考えてみます。
もひとつ、FileLock.lockを使用するメソッドでsynchronizedを使っているとします。
あるスレッドAから、FileLock.lockを使用するメソッドを
呼び出したときに、そのスレッドはFileLock.lockで待ちの状態になります。
別のスレッドBから、FileLock.lockを使用するメソッドを
呼び出すと、synchronizedで待ちの状態になります(スレッドAがsynchronizedの権利をもっているから)。
で、多くのスレッドから呼ばれると、処理がずんずんたまり、
OutOfMemoryが起こったりします。
こういう状態を巷では、「ささる」というらしいです!(-ω-)
こういうことが起こることが予想される場合は、
FileLock.lockではなく、FileLock.tryLockを使いましょう~
tryLockをfor文でまわして、何度かやっても取れなければ
ファイルロックできなかったときの処理(エラーにするとか・・・
どうするかはアナタ次第..(><))を書けばOKです。
今日はここまで。
でわでわ( ̄▽ ̄)/