Search
 
SCRIPT & CODE EXAMPLE
 

JAVA

java producer consumer

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * Producer Consumer Problem solution using BlockingQueue in Java.
 * BlockingQueue not only provide a data structure to store data
 * but also gives you flow control, require for inter thread communication.
 * 
 * @author Javin Paul
 */
public class ProducerConsumerSolution {

    public static void main(String[] args) {
        BlockingQueue<Integer> sharedQ = new LinkedBlockingQueue<Integer>();
        
        Producer p = new Producer(sharedQ);
        Consumer c = new Consumer(sharedQ);
        
        p.start();
        c.start();
    }
}

class Producer extends Thread {
    private BlockingQueue<Integer> sharedQueue;

    public Producer(BlockingQueue<Integer> aQueue) {
        super("PRODUCER");
        this.sharedQueue = aQueue;
    }

    public void run() {
        // no synchronization needed
        for (int i = 0; i < 10; i++) {
            try {
                System.out.println(getName() + " produced " + i);
                sharedQueue.put(i);
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}

class Consumer extends Thread {
    private BlockingQueue<Integer> sharedQueue;

    public Consumer(BlockingQueue<Integer> aQueue) {
        super("CONSUMER");
        this.sharedQueue = aQueue;
    }

    public void run() {
        try {
            while (true) {
                Integer item = sharedQueue.take();
                System.out.println(getName() + " consumed " + item);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Output
PRODUCER produced 0
CONSUMER consumed 0
PRODUCER produced 1
CONSUMER consumed 1
PRODUCER produced 2
CONSUMER consumed 2
PRODUCER produced 3
CONSUMER consumed 3
PRODUCER produced 4
CONSUMER consumed 4
PRODUCER produced 5
CONSUMER consumed 5
PRODUCER produced 6
CONSUMER consumed 6
PRODUCER produced 7
CONSUMER consumed 7
PRODUCER produced 8
CONSUMER consumed 8
PRODUCER produced 9
CONSUMER consumed 9
Comment

PREVIOUS NEXT
Code Example
Java :: android toolbar menu align center 
Java :: random in java a to b 
Java :: compare two character alphabetically java 
Java :: sum of list java 
Java :: Duration class java 
Java :: requestmapping post 
Java :: numbers of digits java 
Java :: last char in string java 
Java :: Adding in java using user input 
Java :: jtable get get row 
Java :: java replace a character at end of string 
Java :: java call method from another class example 
Java :: min max heap java 
Java :: java get first day of the week 
Java :: runtime intalize array in java 
Java :: java try and catch 
Java :: AndroidManifest.xml could not be found. 
Java :: file append in java 
Java :: replace character in string java 
Java :: java  
Java :: java map get key from value 
Java :: jbutton border size java 
Java :: java using .indexof to fin a space 
Java :: how to go to next iteration of while loop java 
Java :: retrieving parent element from child aWebelement selenium java 
Java :: deserialize date java 
Java :: java write to file 
Java :: object cloning in java 
Java :: assert log in unit testing 
Java :: Java Longest String In String Array 
ADD CONTENT
Topic
Content
Source link
Name
8+9 =