我有2个不同的服务器运行相同的计划java进程。该进程需要访问共享文件系统上的文件并将其锁定。锁定文件的第一个进程有权进行一些计算,而第二个进程只是跳过执行 以下是代码段:
final RandomAccessFile file = new RandomAccessFile("./src/main/resources/test.txt", "rw");
final FileChannel fileChannel = file.getChannel();
final FileLock lock = fileChannel.tryLock();
try
{
if (lock != null)
{
//do some calculations that have nothing to do with the locked file
}
else
{
//skip the execution
}
}
finally
{
if (lock != null)
{
lock.release();
}
file.close();
}
我担心的是,根据操作系统,锁可以是独占的或建议的。文档说我们应该实施解决方案,好像锁定是建议性的,以避免将来出现问题 我的问题是:
请注意,我不需要读取/写入锁定的文件,我只需要锁定文件,这样就可以一次将进程的执行限制为1个进程。