gpt4 book ai didi

用于防止多个 JVM 进程多次写入的 Java Filelock 不起作用

转载 作者:太空狗 更新时间:2023-10-29 12:28:38 29 4
gpt4 key购买 nike

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

  • 这个程序的目的是,如果多人调用该程序,该实例应该获得一个文件锁(类似于 linux 系统上的 flock)。

  • 我通过从两个不同的终端运行类文件来尝试我的程序是否正常工作。但是,它每次都返回 true,也就是说,即使第一个进程正在运行并且没有释放锁,第二个进程也能够获取锁。

我的代码是

    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。

关于用于防止多个 JVM 进程多次写入的 Java Filelock 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847918/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com