Use stderr where appropriate.
[TD_SR.git] / TD1 / exo3 / BufferCirc.java
index 68f1f1f9fd922c1eab10fcf1d1f52a336156c605..3c7a65efc1d554ee7c1415a4414916610d11b293 100644 (file)
@@ -1,68 +1,71 @@
-\r
-\r
-/**\r
- * implementation du producteur consommateur avec un buffer circulaire\r
- */\r
-public class BufferCirc {\r
-\r
-       private Object[] tampon;\r
-       private int taille;\r
-       private int prem, der, nbObj;\r
-\r
-\r
-       public BufferCirc (int t) {\r
-               taille = t;\r
-               tampon = new Object[taille];\r
-               prem = 0;\r
-               der = 0;\r
-               nbObj = 0;\r
-       }\r
-\r
-\r
-       public boolean isEmpty() {\r
-               return nbObj == 0;\r
-       }\r
-\r
-\r
-       public boolean isFull() {\r
-               return nbObj == taille;\r
-       }\r
-\r
-\r
-       public synchronized void depose(Object obj) {\r
-               while(isFull()) {\r
-                       try {\r
-                               System.out.println("Buffer is full: " + Thread.currentThread().getName()\r
-                                    + " is waiting, size: " + nbObj);\r
-\r
-                               wait();\r
-                       }\r
-                       catch (InterruptedException e) {}\r
-               }\r
-               nbObj++;\r
-               tampon[prem] = obj;\r
-               prem = (prem + 1) % taille;\r
-               //System.out.println(Thread.currentThread().getName() + " a depose " + (Integer)obj);\r
-               notify();\r
-       }\r
-\r
-\r
-       public synchronized Object preleve() {\r
-               while(isEmpty()) {\r
-                       try {\r
-                               System.out.println("Buffer is empty: " + Thread.currentThread().getName()\r
-                                    + " is waiting, size: " + nbObj);\r
-                               wait();\r
-                       }\r
-                       catch (InterruptedException e) {}\r
-               }\r
-               Object outObj = null;\r
-               nbObj--;\r
-               outObj = tampon[der];\r
-               der = (der + 1) % taille;\r
-               //System.out.println(Thread.currentThread().getName() + " a preleve " + (Integer)outObj);\r
-               notify();\r
-               return outObj;\r
-       }\r
-\r
-} // fin class BufferCirc\r
+
+
+/**
+ * implementation du producteur consommateur avec un buffer circulaire
+ */
+public class BufferCirc {
+
+       private Object[] tampon;
+       private int taille;
+       private int prem, der, nbObj;
+
+
+       public BufferCirc (int t) {
+               taille = t;
+               tampon = new Object[taille];
+               prem = 0;
+               der = 0;
+               nbObj = 0;
+       }
+
+
+       public boolean isEmpty() {
+               return nbObj == 0;
+       }
+
+
+       public boolean isFull() {
+               return nbObj == taille;
+       }
+
+
+       public synchronized void depose(Object obj) {
+               while(isFull()) {
+                       try {
+                               System.out.println("Buffer is full: " + Thread.currentThread().getName()
+                                                                  + " is waiting, size: " + nbObj);
+                               wait();
+                       }
+                       catch (InterruptedException e) {
+                               System.err.println("InterruptedException: " + e);
+                       }
+               }
+               nbObj++;
+               tampon[prem] = obj;
+               prem = (prem + 1) % taille;
+               //System.out.println(Thread.currentThread().getName() + " a depose " + (Integer)obj);
+               notifyAll();
+       }
+
+
+       public synchronized Object preleve() {
+               while(isEmpty()) {
+                       try {
+                               System.out.println("Buffer is empty: " + Thread.currentThread().getName()
+                                                                  + " is waiting, size: " + nbObj);
+                               wait();
+                       }
+                       catch (InterruptedException e) {
+                               System.err.println("InterruptedException: " + e);
+                       }
+               }
+               Object outObj = null;
+               nbObj--;
+               outObj = tampon[der];
+               der = (der + 1) % taille;
+               //System.out.println(Thread.currentThread().getName() + " a preleve " + (Integer)outObj);
+               notifyAll();
+               return outObj;
+       }
+
+} // fin class BufferCirc