Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.18 KB | None | 0 0
  1. package net.dvt32.concurrency.task7;
  2.  
  3. import java.util.Vector;
  4.  
  5. class Warehouse {
  6.     private Vector<Integer> sharedQueue;
  7.     private static int capacity;
  8.    
  9.     public Warehouse(int capacity) {
  10.         sharedQueue = new Vector<Integer>();
  11.         this.capacity = capacity;
  12.     }
  13.    
  14.     public synchronized void put(Integer number)
  15.         throws InterruptedException
  16.     {
  17.         while ( sharedQueue.size() == capacity ) {
  18.             wait();
  19.         }
  20.         sharedQueue.add(number);
  21.         notify();
  22.     }
  23.    
  24.     public synchronized Integer get()
  25.         throws InterruptedException
  26.     {
  27.         while ( sharedQueue.size() == 0 ) {
  28.             wait();
  29.         }
  30.        
  31.         int removedNumber =  sharedQueue.firstElement();
  32.         sharedQueue.remove( sharedQueue.firstElement() );
  33.         notify();
  34.         return removedNumber;
  35.     }
  36.    
  37.     public String toString() {
  38.         return sharedQueue.toString();
  39.     }
  40. }
  41.  
  42. class Producer
  43.     extends Thread
  44. {
  45.     Warehouse warehouse;
  46.  
  47.     public Producer(Warehouse warehouse, String name) {
  48.         this.warehouse = warehouse;
  49.         setName(name);
  50.     }
  51.    
  52.     public void run() {
  53.         try {
  54.             int value = 0;
  55.             while (value < 5) {
  56.                 value++;
  57.                 warehouse.put( value );
  58.                 System.out.println("Producer " + getName() + " put " + value);
  59.                 Thread.sleep(500);
  60.             }
  61.         }
  62.         catch (InterruptedException e) {
  63.             e.printStackTrace();
  64.         }
  65.     }
  66.    
  67.    
  68. }
  69.  
  70. class Consumer
  71.     extends Thread
  72. {
  73.     Warehouse warehouse;
  74.    
  75.     public Consumer(Warehouse warehouse, String name) {
  76.         this.warehouse = warehouse;
  77.         setName(name);
  78.     }
  79.    
  80.     public void run() {
  81.         try {
  82.             while (true) {
  83.                 int value = warehouse.get();
  84.                 System.out.println("Consumer " + getName() + " got " + value);
  85.                 Thread.sleep(2000);
  86.             }
  87.         }
  88.         catch (InterruptedException e) {
  89.             e.printStackTrace();
  90.         }
  91.     }
  92.    
  93. }
  94.  
  95. public class OneProducerManyConsumers {
  96.     public static void main(String[] args) {
  97.         final int CAPACITY = 1;
  98.         Warehouse warehouse = new Warehouse( CAPACITY );
  99.        
  100.         Producer producer1 = new Producer(warehouse, "1");
  101.         producer1.start();
  102.        
  103.         //Producer producer2 = new Producer(warehouse, "2");
  104.         //producer2.start();
  105.        
  106.         Consumer consumer1 = new Consumer(warehouse, "Ivan");
  107.         consumer1.start();
  108.        
  109.         Consumer consumer2 = new Consumer(warehouse, "Petar");
  110.         consumer2.start();
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement