Время от времени я хочу использовать System.out.prinln
для отладки вещей вместо использования отладчика, или я хочу, чтобы простая программа записывала в стандартный вывод, чтобы я мог что-то регистрировать, не тратя время на правильную настройку ведения журнала. Я заметил, что иногда мой текст печатается не по порядку. Например.:
System.out.println("A");
System.out.println("B");
System.out.println("C");
может привести к
A
C
B
печатается.
Я почти уверен, что я не сумасшедший, поэтому у меня есть два вопроса:
- Почему это происходит?
- Какой простой способ предотвратить это?
РЕДАКТИРОВАТЬ: Дополнительная информация:
Я запускаю модульные тесты, которые создают запросы Lucene с помощью JUnit. Чтобы распечатать их, я написал этот класс:
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()' на случай, если несколько потоков вызывали его, но странная печать все еще иногда происходит не по порядку.