我有一个问题,该代码每次运行时都不会返回相同的值。我认为这是因为它不是线程安全的,并且我在使用 parallel() 时遇到了一些并发问题。我曾尝试使用分离器,这很有效,但运行时因为差 3 倍,与顺序相同。我还能怎么做?
ps:traverseDirectory返回一个目录下所有.txt文件的BlockingQueue。
try {
pq = traverseDirectory(dir, pq);
while(!pq.isEmpty()){
File f = pq.take();
LineNumberReader lr = new LineNumberReader(new FileReader(f));
lr.lines()
.parallel()
.forEach((line) -> {
String[] words = line.split("\\s+");
for( String word : words ){
wordList.add(word);
}
}); // foreach
} // while
} //try
catch (IOException | InterruptedException e) {}
System.out.println("size: " + wordList.size());
编辑 我忘了提到,我需要跟踪在哪一行找到了这个词!