java - 从两台(或更多)不同机器访问单个文件时遇到问题吗?

标签 java linux synchronization filesystems distributed-computing

我有一个存储桶,里面有大量文件。 (文件大小低于 500kb)。

我想将数据发送到另一个端点,为了快速完成,我必须在 N 台不同的机器上设置一个多线程环境。

每台机器都可以访问文件存储桶,并且线程会将文件移动到不同的目录。我的问题是:

如果 machine-1 上的一个线程已经在移动文件,同时 machine-2 上的线程尝试移动同一个文件,会发生什么情况

它会抛出线程 2 的异常并提示“找不到文件”吗?或者两个线程都有机会将相同的文件移动到不同的位置。 (这是不可取的,因为我不想两次处理同一个文件。)

如果它抛出任何类型的异常,这对我来说很好,因为我可以捕获相同的异常并继续处理下一个可用文件。但如果没有,是否有其他机制可以在不同物理机之间锁定文件?

感谢您的时间和帮助!!

最佳答案

完全同意保罗的观点。

实现此目的的一种方法是使用另一个线程(在保存存储桶的计算机上运行)来服务这些操作,并具有来自不同线程的查询队列。这将消除文件移动时的错误(只是不要忘记检查文件是否仍然存在)。

关于java - 从两台(或更多)不同机器访问单个文件时遇到问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017159/

相关文章:

web-services - 通过 Web 服务调用进行时间同步

database - 将 magento 数据库从开发同步到生产

java - SimpleDateFormat 的奇怪行为

java - 将值从一个 jInternalFrame 传递到另一个 jInternalFrame

linux - Eclipse IDE 中的 SDL 配置

Linux 在匹配模式前后添加新行

linux - 尝试打印数据集表时出现问题

java - Hibernate 搜索查询

java - 如何从条件中获取带注释的类

java - 在 Java 中同步 2 个线程的更简单方法?