У меня есть класс под названием коммуникатор. Этот класс является слушателем потока, получающего события из другой программы. Также у этого класса есть обновление вызова метода, которое отправляет программе действие и ожидает ответа от слушателя.
Оба метода находятся в одном классе, но вызываются разными потоками.
public void processRefreshEvent(ManagerEvent event){
//processing event
//...
//I'm done
notify();
}
public synchronized void refresh() throws Exception {
isRefreshing = true;
try {
manager.send(new refresh());
} catch (ManagerException e) {
isRefreshing = false;
}
try {
wait(5000);
} catch (InterruptedException e) {
} finally{
isRefreshing = false;
}
}
при выполнении кода выше я получаю следующее исключение:
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
at Communicator.refresh(Communicator.java:203)
...
Как правильно «ждать» завершения другого потока. Спасибо.