Ich habe folgenden Code um ein wichtiges Verhalten zu simulieren: verzögerter Erzeuger aufgerufen im Main:
nun der code gibt wie erwartet 1 aus, aber hat auch eine IllegalMonitorStateException wie komme ich da herum? Außerdem ich habe mehrere Threads die sich einen Waiter erzeugen und auf das Result ihres eigenen Waiters warten, wie stelle ich sich, dass ein Threat der von einem anderen Waiter aufgeweckt wurde weiter schläft? Ich habe schon überlegt eine Boolsche Variable zusetzen, aber das scheint mir zu unsicher.
Java:
public class MainClass {
public static class Waiter implements Runnable{
private int ses=0;
public void run(){
try{
new Thread().sleep(500);
}catch(InterruptedException i){
i.printStackTrace();
}
ses=1;
notifyAll();
}
public int getSes(){
return ses;
}
}
public static void main(String[] args) {
try{
Waiter w=new Waiter();
Thread wt=new Thread(w);
// Object o=new Object();
wt.start();
synchronized (wt){
wt.wait();}
System.out.println(w.getSes());
}catch(InterruptedException i){
i.printStackTrace();
}
}
}