在java中使用FileLock进行建议锁定

时间:2016-03-29 09:36:50

标签: java multithreading locking cluster-computing file-locking

我有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. 这个代码是否足以满足我的目的,即使锁定是建议的?
  2. 代码示例中是否会出现任何竞争条件?每次只能运行一个计划进程。
  3. 请注意,我不需要读取/写入锁定的文件,我只需要锁定文件,这样就可以一次将进程的执行限制为1个进程。

0 个答案:

没有答案