并行化Java集中的搜索

前端之家收集整理的这篇文章主要介绍了并行化Java集中的搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个List< String>称为线和巨大的(~3G)Set< String>叫做voc.我需要从voc中的行中找到所有行.我可以这样多线程吗?

目前我有这个简单的代码

for(String line: lines) {
  if (voc.contains(line)) {
    // Great!!
  }
}

有没有办法同时搜索几行?可能有现成的解决方案吗?

PS:我正在使用javolution.util.FastMap,因为它在填充期间表现更好.

最佳答案
这是一个可能的实现.请注意,错误/中断处理已被省略,但这可能会给您一个起点.我包含了一个main方法,因此您可以将其复制并粘贴到IDE中以进行快速演示.

编辑:清理一点以提高可读性和列表分区

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ParallelizeListSearch {

    public static void main(String[] args) throws InterruptedException,ExecutionException {
        List

猜你在找的Java相关文章