Back to notes -- Keyboard shortcut: 'u'              Lecture 14 - slide 38 : 41
Program 2
 

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