//Classe che implementa tramite wait e notify un Semaforo.//Se non vi ricordate cosa sia un semaforo, google is your best friend.publicclassSemaphoreextendsThread{privateintmaxNumber;//numero massimo di threadprivateintthreadsIn;//conteggio dei thread nell'area criticaSemaphore(intmax){maxNumber=max;threadsIn=0;}publicsynchronizedvoidenter(){System.out.println(""+threadsIn+" in the critical region...");//quando abbiamo raggiunto il numero massimo di thread, chi vuole entrare aspettaif(threadsIn>=maxNumber){try{this.wait();}catch(InterruptedExceptionie){ie.printStackTrace();}}threadsIn++;}publicsynchronizedvoidexit(){threadsIn--;//quando un thread esce dall'area critica, sveglia qualcuno in attesa di entrare (se presente)this.notify();}}