Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pizzeriaGiugno;
- import java.util.Random;
- import java.util.concurrent.Semaphore;
- public class PizzeriaSem extends Pizzeria{
- Semaphore tavolo;
- Semaphore pizzaiolo;
- Semaphore possoSedermi;
- Semaphore pronta;
- Semaphore mutexseduta;
- Semaphore mutexalzata;
- Random r;
- public PizzeriaSem() {
- tavolo=new Semaphore(5,true);
- pizzaiolo=new Semaphore(0,true);
- possoSedermi=new Semaphore(5,true);
- pronta=new Semaphore(0,true);
- mutexseduta=new Semaphore(1,true);
- mutexalzata=new Semaphore(1,true);
- r=new Random();
- }
- @Override
- void mangiaPizza() throws InterruptedException {
- while(pronta.availablePermits()==0)
- Thread.sleep(0);
- Thread.sleep(r.nextInt(10)+1);
- pizzaMangiata();
- }
- @Override
- void pizzaMangiata() throws InterruptedException {
- mutexalzata.acquire();
- System.out.println("GNAM");
- tavolo.release();
- System.out.println("Numero Clienti: " + Integer.toString(5-tavolo.availablePermits()));
- if(tavolo.availablePermits()==5) {
- pronta.acquire();
- possoSedermi.release(5);
- }
- mutexalzata.release();
- }
- @Override
- void preparaPizza() throws InterruptedException {
- pizzaiolo.acquire();
- Thread.sleep(5);
- pizzaPronta();
- }
- @Override
- void pizzaPronta() throws InterruptedException {
- System.out.println("PRONTA!");
- pronta.release();
- }
- @Override
- void siediti() throws InterruptedException {
- mutexseduta.acquire();
- possoSedermi.acquire();
- tavolo.acquire();
- System.out.println("Posti disponibili: " +tavolo.availablePermits());
- if(tavolo.availablePermits()==0)
- pizzaiolo.release();
- mutexseduta.release();
- mangiaPizza();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement