From 13fe8abe71e9a5cfdb19ba7e79f4d2c84721f65b Mon Sep 17 00:00:00 2001 From: trochas Date: Sun, 8 Dec 2024 11:57:09 +0100 Subject: [PATCH] =?UTF-8?q?correction=20bug=20compartiment=20(init=20libre?= =?UTF-8?q?=20a=20true,=20et=20boucle=20while=20avec=20un=20||,=20manquait?= =?UTF-8?q?=20aussi=20un=20notifyAll=20apr=C3=A8s=20avoir=20rempli=20un=20?= =?UTF-8?q?compartiment)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Client.java | 2 +- src/Compartiment.java | 4 +++- src/Cuisinier.java | 5 ++--- src/Employe_du_buffet.java | 4 ++-- src/Restaurant.java | 2 -- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Client.java b/src/Client.java index 7ca4705..fb4f952 100644 --- a/src/Client.java +++ b/src/Client.java @@ -28,7 +28,7 @@ public class Client extends Thread { synchronized(compartiment){ int r =new Random().nextInt(MAX_PORTION); try{ - while(r > compartiment.getQuantite() && !compartiment.isLibre()){ //todo compartiment déjà occupé ? + while(r > compartiment.getQuantite() || !compartiment.isLibre()){ compartiment.wait(); } } catch (InterruptedException e){ diff --git a/src/Compartiment.java b/src/Compartiment.java index 67f9694..18e3494 100644 --- a/src/Compartiment.java +++ b/src/Compartiment.java @@ -5,12 +5,14 @@ public class Compartiment{ private boolean libre; Compartiment(String name){ - quantite_courant = 500; + this.quantite_courant = 500; this.name = name; + this.libre = true; } synchronized void remplir(){ quantite_courant = QUANTITE_MAX; + notifyAll(); } synchronized void servir(int qte){ diff --git a/src/Cuisinier.java b/src/Cuisinier.java index 59cf782..a1f5b71 100644 --- a/src/Cuisinier.java +++ b/src/Cuisinier.java @@ -31,16 +31,15 @@ public class Cuisinier extends Thread { } public void faire_cuire(Client client){ - System.out.println("Cuisinier : fait cuire le plat de " + client.getNameClient()) ; + System.out.println("# Cuisinier : fait cuire le plat de " + client.getNameClient()) ; try{ long temps_cuire =new Random().nextInt(300 - 100) + 100; Thread.sleep(temps_cuire); }catch(InterruptedException e){ e.printStackTrace(); } - System.out.println("Cuisinier : a fini de cuire le plat de " + client.getNameClient()) ; + System.out.println("# Cuisinier : a fini de cuire le plat de " + client.getNameClient()) ; stand.nextClient(); stand.finir_cuit(); } - } diff --git a/src/Employe_du_buffet.java b/src/Employe_du_buffet.java index 5d0546b..0970c4f 100644 --- a/src/Employe_du_buffet.java +++ b/src/Employe_du_buffet.java @@ -16,9 +16,9 @@ public class Employe_du_buffet extends Thread{ buffet[i].wait(); } } catch (Exception e) { - // TODO: handle exception + e.printStackTrace(); } - System.out.println("Employe Buffer : remplie de stand " + i); + System.out.println("Employe Buffer : remplie de stand " + buffet[i].getName() + ", il ne restait plus que " + buffet[i].getQuantite() +" g"); buffet[i].remplir(); } } diff --git a/src/Restaurant.java b/src/Restaurant.java index 8cc2659..5f7c8b8 100644 --- a/src/Restaurant.java +++ b/src/Restaurant.java @@ -46,9 +46,7 @@ public class Restaurant { return (MAX_CLIENTS>nbClient); } public synchronized void ajouterClient(){ - if(nbClient