Producer.java Source code

Java tutorial

Introduction

Here is the source code for Producer.java

Source

import java.util.Vector;

class Producer extends Thread {
    Queue queue;

    Producer(Queue queue) {
        this.queue = queue;
    }

    public void run() {
        int i = 0;
        while (true) {
            queue.add(i++);
        }
    }
}

class Consumer extends Thread {
    String str;
    Queue queue;

    Consumer(String str, Queue queue) {
        this.str = str;
        this.queue = queue;
    }

    public void run() {
        while (true) {
            System.out.println(str + ": " + queue.remove());
        }
    }
}

class Queue {
    private final static int SIZE = 5;
    private Vector queue = new Vector();
    private int count = 0;

    synchronized void add(int i) {
        while (count == SIZE) {
            try {
                wait();
            } catch (InterruptedException ie) {
                ie.printStackTrace();
                System.exit(0);
            }
        }
        queue.addElement(new Integer(i));
        ++count;
        notifyAll();
    }

    synchronized int remove() {
        while (count == 0) {
            try {
                wait();
            } catch (InterruptedException ie) {
                ie.printStackTrace();
                System.exit(0);
            }
        }
        Integer iobj = (Integer) queue.firstElement();
        queue.removeElement(iobj);
        --count;
        notifyAll();
        return iobj.intValue();
    }
}

class ProducerConsumers {
    public static void main(String args[]) {
        Queue queue = new Queue();
        new Producer(queue).start();
        new Consumer("ConsumerA", queue).start();
        new Consumer("ConsumerB", queue).start();
        new Consumer("ConsumerC", queue).start();
    }
}