在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及其之前的版本?
java.nio.channels.FileLock类检查其他FileChannel实例已锁定的文件。
如果应用程序尝试锁定与通过另一个FileChannel实例锁定的区域重叠的区域,则Java SE 6会抛出OverlappingFileLockException。之前的版本没有检查由其他FileChannel实例获取的文件锁定。默认情况下,java.nio.channels.FileChannel.lock方法检查所请求的锁是否与此Java虚拟机持有的区域重叠。
因此,在Java 6之前,如果您有多个程序写入同一文件(每个程序尝试获取独占锁),独占文件锁定将无法工作。人们如何处理Java 5及其之前的版本?