【发布时间】:2011-09-23 03:02:15
【问题描述】:
我有一个场景,其中网络存档文件 (warc) 被爬虫定期删除到不同的目录中。每个 warc 文件内部包含数千个 HTML 文件。
现在,我需要构建一个框架来有效地处理这些文件。我知道 Java 在 I/O 的并行处理方面无法扩展。我在想的是有一个监视线程来扫描这个目录,选择文件名并放入执行服务或一些 Java 阻塞队列。在执行器服务下侦听的一堆工作线程(可能是少量用于 I/O 问题)将读取文件,读取其中的 HTML 文件并进行相应的处理。这是为了确保线程不会争夺同一个文件。
就性能和可扩展性而言,这是正确的方法吗?另外,文件处理后如何处理?理想情况下,文件应该被移动或标记,这样它们就不会被线程再次拾取。这可以通过 Future 对象处理吗?
【问题讨论】:
标签: java multithreading file concurrency io