私は2行あります:
display.print(x); // outputs a collection contenet
LOG.info("Total word count is completed.");
最初の行のメソッド呼び出しは、コレクションから大量のデータを出力します。ただし、印刷中および終了前にログステートメントが実行されます。したがって、出力は次のようになります。
...
a : 6
as : 6
23/06/2012 09:38:01 م sample.testing
INFO: Processing... 0 thread(s) has/have finished
book : 6
had : 6
...
ただし、ログはすべてのデータが印刷された後にのみ印刷する必要があります。なぜこれが起こっているのですか?どうすれば解決できますか?
それが印刷方法です:
public void print(Map<String, Integer> map)
{
for (Map.Entry<String, Integer> current : map.entrySet())
{
System.out.println(String.format("%s : %d", current.getKey(), current.getValue()));
}
System.out.println();
}
編集 2: ThreadClass.getCol()
print メソッドに渡します。ThreadClass.getCol()
多くのスレッドがこのコレクションを更新する ThreadClass からコレクションを返します。それは同期されており、そのコピーを返しています。