Заранее большое спасибо!
У меня были проблемы с синхронизацией двух потоков: основного и потока, который вызывается из StepRunner.java. Мне просто нужно, чтобы результат итерации отображался до начала следующей итерации.
Что я хочу:
Please enter step number [1, 2, 3 or 4] or 5 for exit: 2
Please enter natural value for factorial computing: 2
2! = 2
Please enter step number [1, 2, 3 or 4] or 5 for exit:
Чего я не хочу:
Please enter step number [1, 2, 3 or 4] or 5 for exit: 2
Please enter natural value for factorial computing: 2
Please enter step number [1, 2, 3 or 4] or 5 for exit: 2! = 2
Для этого я синхронизировал блок в StepRunner.java:
public void run() {
thread.start();
synchronized (thread) {
try {
while (thread.isAlive()) { /**Loop is an Oracle's recommendation*/
thread.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Но почему метод wait() корректно работает без метода notify() в любом месте моего кода?