X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TD1%2Fexo3%2FBufferCirc.java;h=335420aa60e278d80fb5ef6aa64078a7264fff1c;hb=1180d8d3a4842901b6fb6fdae975fe5d39fe4039;hp=71204cc158c1680631d02c0714d338e90f9785a1;hpb=396bc7433aa7fc3c404f2d175d1c93b82791cdde;p=TD_SR.git diff --git a/TD1/exo3/BufferCirc.java b/TD1/exo3/BufferCirc.java index 71204cc..335420a 100644 --- a/TD1/exo3/BufferCirc.java +++ b/TD1/exo3/BufferCirc.java @@ -30,27 +30,33 @@ public class BufferCirc { public synchronized void depose(Object obj) { - if (!isFull()) { - nbObj++; - tampon[prem] = obj; - prem = (prem + 1) % taille; - System.out.println(Thread.currentThread().getName() + " a depose " + (Integer)obj); - } else { - System.out.println("Buffer plein pour " + Thread.currentThread().getName()); + while(isFull()) { + try { + wait(); + } + catch (InterruptedException e) {} } + nbObj++; + tampon[prem] = obj; + prem = (prem + 1) % taille; + notify(); + System.out.println(Thread.currentThread().getName() + " a depose " + (Integer)obj); } public synchronized Object preleve() { - Object outObj = null; - if (isEmpty()) { - nbObj--; - outObj = tampon[der]; - der = (der + 1) % taille; - System.out.println(Thread.currentThread().getName() + " a preleve " + (Integer)outObj); - } else { - System.out.println("Buffer vide pour " + Thread.currentThread().getName()); + while(isEmpty()) { + try { + wait(); + } + catch (InterruptedException e) {} } + Object outObj = null; + nbObj--; + outObj = tampon[der]; + der = (der + 1) % taille; + notify(); + System.out.println(Thread.currentThread().getName() + " a preleve " + (Integer)outObj); return outObj; }