Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:多个JVM之间的单个文件处理_Java_File_Synchronization_Multiple Instances - Fatal编程技术网

Java:多个JVM之间的单个文件处理

Java:多个JVM之间的单个文件处理,java,file,synchronization,multiple-instances,Java,File,Synchronization,Multiple Instances,我有一个spring批处理应用程序,它部署在多台服务器(多个JVM)上。所有实例都侦听输入文件的公共共享路径 如何确保保存在共享位置的输入文件只被一个实例使用?这可以使用数据库运行中的枚举状态来维护,而不是\u运行。当线程1开始处理文件时,它将获取调度程序状态实体并检查调度程序状态。如果未运行,则将状态更新为正在运行并执行文件夹,完成后将其标记为未运行。此代码应在单个环境中以同步方式执行。可以使用来自所有批处理的RMI调用来调用它,以获取位置锁。使用唯一实例读取文件夹并将要处理的文件共享给实例(

我有一个spring批处理应用程序,它部署在多台服务器(多个JVM)上。所有实例都侦听输入文件的公共共享路径


如何确保保存在共享位置的输入文件只被一个实例使用?

这可以使用数据库运行中的枚举状态来维护,而不是\u运行。当线程1开始处理文件时,它将获取调度程序状态实体并检查调度程序状态。如果未运行,则将状态更新为正在运行并执行文件夹,完成后将其标记为未运行。此代码应在单个环境中以同步方式执行。可以使用来自所有批处理的RMI调用来调用它,以获取位置锁。

使用唯一实例读取文件夹并将要处理的文件共享给实例(填充线程安全队列或任何其他解决方案)。。该实例不会做任何其他事情。@AxelH我不确定这是否适用于多个JVM。我们在哪里排队?在共享系统上?不同的服务器。。。我的错!我不是这个并发级别的专家,所以我不知道如何正确地管理它。有黑客,但我不会建议那些太快。太棒了!!!如果两个实例(线程)同时启动,会发生什么?它们同时读取状态,即未运行。两个线程都将开始处理文件。我认为您没有正确阅读答案。请重新查看,此代码应该在单个环境中以同步方式执行。可以使用来自所有批处理的RMI调用来调用它,以获取位置上的锁。这意味着通过获取状态来获取锁的代码只能由单个线程访问。因此,当您无法回答问题时,您可以对其进行否决表决@SachinMhetre没抓到你