【问题标题】:Java file lock for read and write with multiple processes [duplicate]用于多进程读写的Java文件锁[重复]
【发布时间】:2020-06-27 08:22:38
【问题描述】:

在我的应用程序中,多个进程正在尝试访问文件以进行读写。每个应用程序都有一个线程。我需要确保没有 2 个进程同时访问该文件。我在 JDK 中使用 FileLock。这可以正常工作,当一个进程获得锁并且其他进程尝试访问文件(用于读取或写入)时抛出异常,说明文件已被其他进程锁定。

现在我需要确保,对于第二个进程,而不是抛出异常线程应该等到第一个进程释放锁,一旦锁被释放,继续其工作。

我该怎么做。所以,胖子我一直想不通这样做。

【问题讨论】:

  • 异常处理有什么问题?

标签: java file-locking multiple-processes readwritelock


【解决方案1】:

您是否考虑过实施以下类似的方法?

while (true) {
   try to acquire lock - {
     // if the lock is acquired break the loop     

   } catch (Exception) {
     log... exception
     possibly wait for sometime
  }
}

【讨论】:

  • 可能是,因为伪代码或者while (true)
  • 当多个进程都试图获取同一个文件的锁定时,您希望这段代码如何工作?
  • 两者都将继续循环,最终其中一个将能够获得锁。如果获取锁实现不是线程安全的,则必须将其保存在同步块中以确保线程安全
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
相关资源
最近更新 更多