在 Java 1.5 中,java.nio.channels.FileLock 不会检查已锁定的文件。参考这里
该片段指出:
java.nio.channels.FileLock 类检查已被其他 FileChannel 实例锁定的文件
如果应用程序尝试锁定与通过另一个 FileChannel 实例锁定的区域重叠的区域,Java SE 6 将引发 OverlappingFileLockException。以前的版本不检查其他 FileChannel 实例获得的文件锁。默认情况下,java.nio.channels.FileChannel.lock 方法检查请求的锁是否与此 Java 虚拟机持有的区域重叠。
因此,在 Java 6 之前的版本中,如果您有多个程序写入同一个文件(每个程序都试图获得一个独占锁),则独占文件锁定不起作用。人们是如何使用 Java 5 及之前的版本解决这个问题的?