woke
This commit is contained in:
16
Au_Woke.java
Normal file
16
Au_Woke.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
public class Au_Woke {
|
||||||
|
private Client[] clients= new Client[30];
|
||||||
|
private Restaurant restaurant =new Restaurant();
|
||||||
|
Au_Woke(){
|
||||||
|
restaurant.cuisinier.start();
|
||||||
|
restaurant.employeB.start();
|
||||||
|
for(int i=0; i<clients.length; i++){
|
||||||
|
clients[i] = new Client(restaurant);
|
||||||
|
clients[i].start();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public static void main(String[] args){
|
||||||
|
new Au_Woke();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ public class Client extends Thread {
|
|||||||
int r =new Random().nextInt(MAX_PORTION);
|
int r =new Random().nextInt(MAX_PORTION);
|
||||||
try{
|
try{
|
||||||
while(r > compartiment.getQuantite()){
|
while(r > compartiment.getQuantite()){
|
||||||
this.wait();
|
compartiment.wait();
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e){
|
} catch (InterruptedException e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -46,7 +46,7 @@ public class Client extends Thread {
|
|||||||
synchronized(restaurant){
|
synchronized(restaurant){
|
||||||
try{
|
try{
|
||||||
while(!restaurant.libre()){
|
while(!restaurant.libre()){
|
||||||
this.wait();
|
restaurant.wait();
|
||||||
}
|
}
|
||||||
restaurant.ajouterClient();
|
restaurant.ajouterClient();
|
||||||
restaurant.notifyAll();
|
restaurant.notifyAll();
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ public class Compartiment{
|
|||||||
private int quantite_courant;
|
private int quantite_courant;
|
||||||
|
|
||||||
Compartiment(){
|
Compartiment(){
|
||||||
quantite_courant = 0;
|
quantite_courant = 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void remplir(){
|
synchronized void remplir(){
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
public class Restaurant {
|
public class Restaurant {
|
||||||
protected final int MAX_CLIENTS = 25;
|
protected final int MAX_CLIENTS = 25;
|
||||||
private int nbClient;
|
|
||||||
|
public int nbClient;
|
||||||
|
|
||||||
public Compartiment[] buffet = new Compartiment[4];
|
public Compartiment[] buffet = new Compartiment[4];
|
||||||
private Employe_du_buffet employeB;
|
public Employe_du_buffet employeB;
|
||||||
public Stand_de_cuisson stand_de_cuisson;
|
public Stand_de_cuisson stand_de_cuisson;
|
||||||
private Cuisinier cuisinier;
|
public Cuisinier cuisinier;
|
||||||
|
/*
|
||||||
private Client[] clients= new Client[MAX_CLIENTS+5];
|
private Client[] clients= new Client[MAX_CLIENTS+5];
|
||||||
|
|
||||||
Restaurant(){
|
Restaurant(){
|
||||||
@@ -25,8 +27,17 @@ public class Restaurant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
public Restaurant(){
|
||||||
|
this.nbClient=0;
|
||||||
|
for(int i = 0 ; i<buffet.length; i++){
|
||||||
|
this.buffet[i] = new Compartiment();
|
||||||
|
}
|
||||||
|
this.employeB = new Employe_du_buffet(buffet);
|
||||||
|
this.stand_de_cuisson = new Stand_de_cuisson();
|
||||||
|
this.cuisinier = new Cuisinier(stand_de_cuisson);
|
||||||
|
|
||||||
|
}
|
||||||
public synchronized boolean libre(){
|
public synchronized boolean libre(){
|
||||||
if(nbClient>MAX_CLIENTS){
|
if(nbClient>MAX_CLIENTS){
|
||||||
return false;
|
return false;
|
||||||
@@ -45,7 +56,5 @@ public class Restaurant {
|
|||||||
nbClient--;
|
nbClient--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void main(String[] args){
|
|
||||||
new Restaurant();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user