我有一个存储桶,里面有大量文件。 (文件大小低于 500kb)。
我想将数据发送到另一个端点,为了快速完成,我必须在 N 台不同的机器上设置一个多线程环境。
每台机器都可以访问文件存储桶,并且线程会将文件移动到不同的目录。我的问题是:
如果 machine-1 上的一个线程已经在移动文件,同时 machine-2 上的线程尝试移动同一个文件,会发生什么情况
?
它会抛出线程 2 的异常并提示“找不到文件”吗?或者两个线程都有机会将相同的文件移动到不同的位置。 (这是不可取的,因为我不想两次处理同一个文件。)
如果它抛出任何类型的异常,这对我来说很好,因为我可以捕获相同的异常并继续处理下一个可用文件。但如果没有,是否有其他机制可以在不同物理机之间锁定文件?
感谢您的时间和帮助!!
最佳答案
完全同意保罗的观点。
实现此目的的一种方法是使用另一个线程(在保存存储桶的计算机上运行)来服务这些操作,并具有来自不同线程的查询队列。这将消除文件移动时的错误(只是不要忘记检查文件是否仍然存在)。
关于java - 从两台(或更多)不同机器访问单个文件时遇到问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017159/