我正在研究并发文件下载过程,但不确定采取什么方法。
关于:
应用程序将一堆文件捆绑在一起形成一个 zip 文件。这些文件通常位于硬盘驱动器上的公共(public)位置(例如/tmp)。然而,有时文件不存在,需要从远程 http 服务器下载。
问题:
如何同时下载多个文件并确保没有其他线程(捆绑文件)同时下载同一文件?
此外,如何确保在多个应用程序同时运行的情况下(请记住这些文件都位于公共(public)位置),应用程序的任何实例都不会同时下载相同的文件时间?
请描述策略以及实现该策略的方法。也许上述问题的解决方案已经存在。
谢谢!
最佳答案
您可以使用队列或数据库来下载所需的文件,只需保留一个 “状态”列和线程会将文件标记为“正在获取”。什么时候 完成后它将设置为“完成”。保留最后更改时间戳,如果 文件下载时间较长,请停止或重新开始下载。
为此文件队列使用数据库可能会确保其他应用程序 不要多次获取同一个文件(也许坚持下载 ETC;)。您还可以运行多个下载,并且数据库可以 用于跟踪下载速度、进度等;
将来你的问题应该用特定的代码、特定的问题来格式化。您的问题非常广泛,并提出了讨论(更适合聊天),而不是其他人可能使用的单一答案。
关于java - Java并发通用文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912466/