Advertisement
Akalaman

PizzeriaSem

Aug 29th, 2019
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.63 KB | None | 0 0
  1. package pizzeriaGiugno;
  2.  
  3. import java.util.Random;
  4. import java.util.concurrent.Semaphore;
  5.  
  6. public class PizzeriaSem extends Pizzeria{
  7.     Semaphore tavolo;
  8.     Semaphore pizzaiolo;
  9.     Semaphore possoSedermi;
  10.     Semaphore pronta;
  11.     Semaphore mutexseduta;
  12.     Semaphore mutexalzata;
  13.     Random r;
  14.     public PizzeriaSem() {
  15.         tavolo=new Semaphore(5,true);
  16.         pizzaiolo=new Semaphore(0,true);
  17.         possoSedermi=new Semaphore(5,true);
  18.         pronta=new Semaphore(0,true);
  19.         mutexseduta=new Semaphore(1,true);
  20.         mutexalzata=new Semaphore(1,true);
  21.         r=new Random();
  22.     }
  23.     @Override
  24.     void mangiaPizza() throws InterruptedException {
  25.         while(pronta.availablePermits()==0)
  26.             Thread.sleep(0);
  27.         Thread.sleep(r.nextInt(10)+1);
  28.         pizzaMangiata();
  29.     }
  30.  
  31.     @Override
  32.     void pizzaMangiata() throws InterruptedException {
  33.         mutexalzata.acquire();
  34.         System.out.println("GNAM");
  35.         tavolo.release();
  36.         System.out.println("Numero Clienti: " + Integer.toString(5-tavolo.availablePermits()));
  37.         if(tavolo.availablePermits()==5) {
  38.             pronta.acquire();
  39.             possoSedermi.release(5);
  40.         }
  41.         mutexalzata.release();
  42.     }
  43.  
  44.     @Override
  45.     void preparaPizza() throws InterruptedException {
  46.         pizzaiolo.acquire();
  47.         Thread.sleep(5);
  48.         pizzaPronta();
  49.     }
  50.  
  51.     @Override
  52.     void pizzaPronta() throws InterruptedException {
  53.         System.out.println("PRONTA!");
  54.         pronta.release();
  55.     }
  56.  
  57.     @Override
  58.     void siediti() throws InterruptedException {
  59.         mutexseduta.acquire();
  60.         possoSedermi.acquire();
  61.         tavolo.acquire();
  62.         System.out.println("Posti disponibili: " +tavolo.availablePermits());
  63.         if(tavolo.availablePermits()==0)
  64.             pizzaiolo.release();
  65.         mutexseduta.release();
  66.         mangiaPizza();
  67.     }
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement