并发任务的数据获取与分阶段任务执行
1. 从任务中获取数据
1.1 主要组件与任务
在构建倒排索引的示例中,有以下几个主要组件和任务:
- 每个文档对应一个任务,用于解析文档并生成其词汇表。这些任务由 CompletionService
对象执行,通过 IndexingTask
类实现。
- 两个线程用于处理任务结果并构建倒排索引,通过 InvertedIndexTask
类实现。
- 一个 main()
方法用于创建和执行所有元素,在 ConcurrentIndexing
类中实现。
1.2 代码分析
1.2.1 IndexingTask 类
该类实现了 Callable<Document>
接口,用于解析文档并获取其词汇表。以下是代码实现:
public class IndexingTask implements Callable<Document> {
private File file;
public IndexingTask(File file) {
this.file=file;
}
@Override
public Document call() throws Exception {
DocumentParser parser = new