我编写了一个计算文本中的行数、单词数和字符数的程序:它使用线程来执行此操作。有时效果很好,但有时效果不佳。最终发生的是指向计数的单词和字符数量的变量有时会出现短缺,有时不会。
在我看来,线程有时会在他们计算出他们想要的所有单词或字符之前就结束了。是因为当 while (true) 循环中断时这些线程超出范围吗?
我在下面包含了我的问题的线程部分的代码:
private void countText() {
try {
reader = new BufferedReader(new FileReader("this.txt"));
while (true) {
final String line = reader.readLine();
if(line == null) {break;}
lines++;
new Thread(new Runnable() {public void run() {chars += characterCounter(line);}}).start();
new Thread(new Runnable() {public void run() {words += wordCounter(line);}}).start();
println(line);
}
} catch(IOException ex) {return;}
}
(子问题:这是我第一次询问一些事情并发布代码。我不想使用 StackOverflow 代替谷歌和维基百科,并且担心这不是一个合适的问题?我试图让问题更笼统,所以我不只是寻求我的代码帮助......但是,是否有另一个网站可能更适合这类问题?)