不时地我想用它System.out.prinln
来调试东西而不是使用调试器,或者我想要一个简单的程序来写入标准输出,这样我就可以记录一些东西而无需花时间来设置正确的日志记录。我注意到有时我的文本最终会乱序打印。例如:
System.out.println("A");
System.out.println("B");
System.out.println("C");
可能导致
A
C
B
正在打印。
我很确定我没有疯,所以我有两个问题:
- 为什么会这样?
- 有什么简单的方法可以防止这种情况发生?
编辑:更多信息:
我正在运行使用 JUnit 构建 Lucene 查询的单元测试。为了把它们打印出来,我写了这个类:
public class LogHelper { //TODO-DAVID remove
public static final boolean ENABLED = true;
public static final boolean DISABLED = false;
private boolean enabled;
public LogHelper(boolean enabled){
this.enabled = enabled;
}
public synchronized void debug(String someString){
if(enabled){
System.out.println(someString);
}
}
}
我尝试使'debug()'同步,以防多个线程调用它,但奇怪的打印仍然偶尔会出现乱序。