1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
   | public class BlockingQueue {     private List queue = new LinkedList();     private int  limit = 10;     public BlockingQueue(int limit){         this.limit = limit;     }          public synchronized void enqueue(Object item) throws InterruptedException {         while (this.queue.size() == this.limit) {             wait();         }         if (this.queue.size() == 0) {             notifyAll();         }         this.queue.add(item);     }          public synchronized Object dequeue() throws InterruptedException {         while (this.queue.size() == 0) {             wait();         }         if (this.queue.size() == this.limit) {             notifyAll();         }         return this.queue.remove(0);     }      }
  |