问题描述
Word Count 是一个著名的练手程序。一个文本文件包含若干行,每行包含若干个只包含小写字母的单词,单词之间以空格分割。编写一个程序,统计一个文件列表中,每个单词出现的次数。
方法一:使用Future与线程池
public class MultiThreadWordCount {
public static Map count(int threadNum,
List files) throws FileNotFoundException, ExecutionException, InterruptedException {
final ExecutorService threadPool = Executors.newFixedThreadPool(threadNum);
final HashMap result = new HashMap<>();
final ArrayList>> allFilesFutureWordsCount = new ArrayList<>();
for (File file : files) {
final BufferedReader reader = new BufferedReader(new FileReader(file));
allFilesFutureWordsCount.addAll(readAFileAndCountWord(reader, threadPool, threadNum));
}
for (Future> future : allFilesFutureWordsCount) {
final Map aFileWordCount = future.get();</