Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.dvt32.concurrency.task7;
- import java.util.Vector;
- class Warehouse {
- private Vector<Integer> sharedQueue;
- private static int capacity;
- public Warehouse(int capacity) {
- sharedQueue = new Vector<Integer>();
- this.capacity = capacity;
- }
- public synchronized void put(Integer number)
- throws InterruptedException
- {
- while ( sharedQueue.size() == capacity ) {
- wait();
- }
- sharedQueue.add(number);
- notify();
- }
- public synchronized Integer get()
- throws InterruptedException
- {
- while ( sharedQueue.size() == 0 ) {
- wait();
- }
- int removedNumber = sharedQueue.firstElement();
- sharedQueue.remove( sharedQueue.firstElement() );
- notify();
- return removedNumber;
- }
- public String toString() {
- return sharedQueue.toString();
- }
- }
- class Producer
- extends Thread
- {
- Warehouse warehouse;
- public Producer(Warehouse warehouse, String name) {
- this.warehouse = warehouse;
- setName(name);
- }
- public void run() {
- try {
- int value = 0;
- while (value < 5) {
- value++;
- warehouse.put( value );
- System.out.println("Producer " + getName() + " put " + value);
- Thread.sleep(500);
- }
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- class Consumer
- extends Thread
- {
- Warehouse warehouse;
- public Consumer(Warehouse warehouse, String name) {
- this.warehouse = warehouse;
- setName(name);
- }
- public void run() {
- try {
- while (true) {
- int value = warehouse.get();
- System.out.println("Consumer " + getName() + " got " + value);
- Thread.sleep(2000);
- }
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- public class OneProducerManyConsumers {
- public static void main(String[] args) {
- final int CAPACITY = 1;
- Warehouse warehouse = new Warehouse( CAPACITY );
- Producer producer1 = new Producer(warehouse, "1");
- producer1.start();
- //Producer producer2 = new Producer(warehouse, "2");
- //producer2.start();
- Consumer consumer1 = new Consumer(warehouse, "Ivan");
- consumer1.start();
- Consumer consumer2 = new Consumer(warehouse, "Petar");
- consumer2.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement