编辑:嗯,我回来了几个月后,我试图编码的锁机制不起作用,因为createNewFile在NFS上不可靠.检查下面的答案.
这是我的情况:我只有一个可以访问文件的应用程序,因此我对其他应用程序可能执行的操作没有任何限制,但是为了冗余和性能目的,应用程序在生产环境中的多个服务器上同时运行(有几台机器正在使用我们的应用程序托管每个JVM.
基本上,我需要的是在文件夹中放置某种标志,以告诉其他实例单独保留此文件夹,因为另一个实例已经在处理它.
许多搜索结果都是FileLock用来实现这一点,但是我检查了Javadoc,根据我的理解它不会有太大帮助,因为它使用托管操作系统的锁定可能性.所以我怀疑它会有很大帮助,因为有不同的托管机器.
这个问题涵盖了一个类似的主题:网络上的Java文件锁定,并且接受的答案是建议实现您自己的协作锁定过程(使用File.createNewFile()OP的要求).
Javadoc File.createNewFile()说,如果该文件尚不存在,该过程将自动创建该文件.这在网络文件系统中是否可靠?
我的意思是,潜在的网络延迟如何同时进行存在检查和创建?:
检查文件是否存在以及文件的创建(如果不存在)是针对可能影响文件的所有其他文件系统活动的原子操作.