我有一个叫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