Java 1.5 では、java.nio.channels.FileLock は、すでにロックされているファイルを確認しませんでした。ここで参照
スニペットには次のように記載されています。
java.nio.channels.FileLock クラスは、他の FileChannel インスタンスによってすでにロックされているファイルをチェックします。
Java SE 6 は、別の FileChannel インスタンスを介してロックされた領域と重複する領域をアプリケーションがロックしようとすると、OverlappingFileLockException をスローします。以前のバージョンは、他の FileChannel インスタンスによって取得されたファイル ロックをチェックしませんでした。デフォルトでは、java.nio.channels.FileChannel.lock メソッドは、要求されたロックがこの Java 仮想マシンによって保持されている領域と重複しているかどうかをチェックします。
そのため、Java 6 より前のバージョンでは、複数のプログラムが同じファイルに書き込みを行っている場合 (各プログラムが排他的ロックを取得しようとしていた場合)、排他的ファイル ロックは機能しませんでした。Java 5 以前では、人々はどのようにこれを回避していたのでしょうか?