在具有Java

时间:2016-03-28 14:50:15

标签: java multithreading synchronization hazelcast

我有一个包含2个节点和共享文件系统的集群。每个运行的节点都有一个定期运行的java进程。该进程访问文件系统并处理一些文件,并在处理后删除这些文件 这里的问题是只有一个计划进程应该访问文件。如果第一个进程运行,另一个进程应该跳过执行。

  • 我首次尝试解决此问题以创建隐藏文件.lock 。当第一个进程开始执行时,它应该移动文件 进入另一个文件夹并开始处理文件。当另一个 预定流程开始执行它首先检查.lock 文件存在,如果不是,则进程跳过执行。 当第一个进程完成执行时,它会移动.lock 归档到其原始文件夹。我正在使用Files.move() 使用ATOMIC_MOVE选项的方法,但在一段时间后我 出乎意料的行为。
  • 我的第二次尝试是使用像Hazelcast这样的分布式锁。我做了一些测试,似乎没问题,但这个解决方案对于这么简单的任务来说似乎有点复杂。

我的问题是:针对此问题是否还有其他更智能/更简单的解决方案,或者我唯一的选择是使用Hazelcast?你会如何解决这个问题?

0 个答案:

没有答案