我有两行:
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 返回一个集合,其中许多线程更新此集合。它是同步的,我正在返回它的副本。