Рассмотрите следующие два класса в приложении Java NetBeans. Основной класс:Java с NetBeans 7.2.1 - Ошибка порядка выполнения
public class ExcecutionOrder {
public static void main(String[] args) {
Worker worker = new Worker();
worker.init();
worker.doProcessing();
worker.stop();
}
}
А класс рабочий, как это:
public class Worker {
public void init() {
System.out.println("\n-------------------------------------------------");
System.out.println("Worker initialized.");
System.out.println("-------------------------------------------------\n");
}
public void doProcessing() {
printNTimes(2000);
}
public void doProcess(int n) {
printNTimes(n);
}
public void printNTimes(int n) {
System.out.println();
for (int i = 0; i < n; i++) {
System.err.println("Output by Worker: " + i);
}
System.out.println();
}
public void stop() {
System.out.println("\n-------------------------------------------------");
System.out.println("Worker stopped.");
System.out.println("-------------------------------------------------\n");
}
}
Как ни странно, результаты Ouput в следующем порядке:
Output from Worker: 0
-------------------------------------------------
Output from Worker: 1
Worker initialized.
Output from Worker: 2
-------------------------------------------------
Output from Worker: 3
[...]
Где он должен быть:
-------------------------------------------------
Worker initialized.
-------------------------------------------------
Output from Worker: 0
Output from Worker: 1
Output from Worker: 3
[...]
Если я установил процессор сродство netbeans к использованию только одного ядра процессора, тогда, по крайней мере, начальная часть прекрасна, а другое сообщение controll (Worker stopped.) все еще фрагментировано соответственно. помешали выходные сообщения.
Выполнение этой же функции с использованием Eclipse приводит к ожидаемому исполнению.
Есть ли у кого-нибудь идеи, что здесь происходит? - Большое спасибо за любой совет заранее!
PS: NetBeans 7.2.1 использует jdk1.7.0_03, версия Eclipse - выпуск Mars.2 (4.5.2). Проблема возникает даже при переключении кода из рабочего класса на основной метод основного класса без использования других методов, чем основной метод.
Использование среды IDE ID NetBeans 7.4 с помощью jdk1.8.0_05 также предоставляет порядок выполнения, как ожидалось. –
проверить мой ответ – haifzhan