【发布时间】:2017-06-19 11:14:21
【问题描述】:
问题说明: FTP 服务器充满了以 100 Mbps(即 12.5 MB/s)的速率传入的文件,每个文件大小约为 100 MB。文件将在其创建时间戳后 30 秒后被删除。如果任何进程有兴趣读取这些文件,它应该在 30 秒内带走完整的文件。我正在使用 Java 来解决这个特殊问题。
需要建议哪种设计模式最适合此类问题。我如何确保在服务器删除每个文件之前都会使用它。
您的建议将不胜感激。谢谢
【问题讨论】:
-
为该问题陈述编写代码不是设计模式的问题。如果有的话,这是一个高效的 IO 操作问题。 “我如何确保在服务器删除每个文件之前都会使用它?” => 老实说。你不能。有很多事情可能出错。你想让它防故障吗?如果读取了几乎所有字节(但不是全部)然后文件消失了怎么办?如果其他进程有句柄,它甚至会消失吗?真的,这个问题太宽泛了。
-
其他进程在访问文件时应该对文件加锁,这样我想它就不会被服务器删除。
-
@KevynMeganck 是的,在这种情况下放置锁定是可能的并且很有帮助。谢谢
-
@KevynMeganck 如果你能找到防止删除的锁实现。
标签: java multithreading design-patterns concurrency ftp