class Dirigent{
boolean scenenLedig;
int næsteSanger;
public Dirigent(int hvemStarter){
scenenLedig = true;
næsteSanger = hvemStarter;
}
private int enAndenEnd(int i){
if (i == 1) return(2);
else if (i == 2) return(1);
else return(0);
}
public synchronized void tagScenen(int hvemØnskerAtSynge){
while (!scenenLedig || hvemØnskerAtSynge != næsteSanger){
try {
wait();
} catch (InterruptedException e) { }
} // end while
// scenenLedig && hvemØnskerAtSynge == næsteSanger.
scenenLedig = false;
næsteSanger = enAndenEnd(hvemØnskerAtSynge);
}
public synchronized void frigivScenen(){
scenenLedig = true;
notifyAll();
}
} // end class Dirigent |