我有一個叫communicator的類。該類是接收來自另一個程序的事件的線程的偵聽器。這個類還有一個方法調用刷新,它發送和執行程序a等待通過偵聽器來的響應。如何處理java線程
兩種方法都在同一個類中,但是由不同的線程調用。
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) ...
什麼是正確的方法「等」另一個線程來完成。謝謝。
要明確,「任何線程」的意思是「任何一個等待線程」,而不是「所有等待線程」。 – erickson 2009-04-21 21:08:19