Java 防止多个 JVM 进程多次写入的文件锁不起作用

Java Filelock to prevent multiple writes by multiple JVM processes not working

我正在学习 FileOperations,并且正在编写一个程序来在 linux 机器上实现 FileLocking。

我的密码是

    public boolean getLock() throws FileNotFoundException, IOException{ 
    File lockFile = new File(conf_file);
    System.out.println("Attempting to aquire"
            + " exclusive lock on " + conf_file);
    RandomAccessFile f = new RandomAccessFile(lockFile, "rw");
    FileChannel channel = f.getChannel();
    FileLock lock;
    lock = channel.lock();
    if(lock != null && lock.isValid()){
        f.close();
        return true;
    }
    else{
        f.close();
        return false;
    }
}

我做错了什么?

删除 f.close() 方法,它应该可以工作。要删除评论中的警告,请将这些变量声明为实例变量,并在 removeLock().

等可能的另一种方法中执行 f.close