Saturday, July 21, 2018

What do you mean by BlockingQueue in java?

Problem statement:
How do you write a program to implement producer-consumer problem using BlockingQueue?

[1] Producer.java

import java.util.concurrent.BlockingQueue;
public class Producer implements Runnable {
    BlockingQueue queue = null;
    Producer(BlockingQueue queue) {
        this.queue = queue;
    }
    @Override
    public void run() {
        for (int i = 1; i <= 12; i++) {
            System.out.println("Produced item " + i);
            try {
                queue.put("item " + i);
            } catch (InterruptedException e) {

                e.printStackTrace();
            }
        }
    }
}

[2] Consumer.java

import java.util.concurrent.BlockingQueue;
public class Consumer implements Runnable {
    BlockingQueue queue = null;
    public Consumer(BlockingQueue queue) {
        super();
        this.queue = queue;
    }
    @Override
    public void run() {
        while (true) {
            try {
                System.out.println("Consumed " + queue.take());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

[3] BlockingQueueExecution.java

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class BlockingQueueExecution {
    public static void main(String args[]) {
        BlockingQueue queue = new ArrayBlockingQueue(10); // here capacity= 10
        Producer producer = new Producer(queue);
        Consumer consumer = new Consumer(queue);
        new Thread(producer).start();
        new Thread(consumer).start();
    }
}

Output:
Produced item 1
Consumed item 1
Produced item 2
Consumed item 2
Produced item 3
Consumed item 3
Produced item 4
Produced item 5
Consumed item 4
Produced item 6
Consumed item 5
Produced item 7
Consumed item 6
Produced item 8
Consumed item 7
Produced item 9
Consumed item 8
Produced item 10
Consumed item 9
Produced item 11
Consumed item 10
Produced item 12
Consumed item 11
Consumed item 12

No comments:

Post a Comment

Blueprint for self-improvement

To learn faster: Make the process fun To understand yourself : Write To understand the world better : Read To build deeper connection : Lis...