テキスト内の行数、単語数、文字数を数えるプログラムを作成しました。これはスレッドを使用して行います。うまく機能することもありますが、そうでないときもあります。最終的に起こるのは、カウントされた単語と文字の数を指す変数が不足する場合とそうでない場合があります。
必要なすべての単語または文字を数えることができる前に、スレッドが終了することがあるように私には思えます。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;}
}
(サブ質問: 何かについて尋ねてコードを投稿したのはこれが初めてです。Google やウィキペディアの代わりに StackOverflow を使用したくなく、これが適切な質問ではないのではないかと心配していますか?より一般的な質問なので、コードの助けを求めているだけではありません...しかし、この種の質問がより適切な別のWebサイトはありますか?)