Re: Thread.wait()
I'm struggling getting my head around this for some reason today. I'm not
referring to things correctly i n my code, with respect to the threads -- I
must be misunderstanding you Gordon, because I am getting and
IllegalMonitorStateException when I call notify on the runnable, from, what
I believe, is the class that owns the Runnable, yes? I've pared down the
code here, but you can see what is going on. What am I missing? The thread
calling the notify IS the Event Dispatch thread, isn;t it? If not, how do I
obtain it from where I am at below? Thanks again -- I'm just dizzy from this
or something! -Ralph
Exception in thread "AWT-EventQueue-0"
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.notify(Native Method)
at
robot.server.core.responder.SmartResponder.getGoBack(SmartResponder.java:411)
public class SmartResponder {
public Runnable studyinteractive;
....
public void doResponseStudy() {
studyinteractive = new Runnable(){
public void run(){
study();
};
};
javax.swing.SwingUtilities.invokeLater(studyinteractive);
}
public void study(){
...
try{
synchronized(this) {
while(getGoBack())
wait();
}
}catch(InterruptedException interruptedexception) { }
}
public boolean getGoBack(){ //pared down here, b is actually a long
conditional, not merely what is shown
boolean b= arrayList.size()>0;
if(!b )
studyinteractive.notify(); //// <-----------line 411
return b;
}