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

How to run standalone mock server on local laptop

 Please download the standalone wiremock server from Direct download section at the bottom of the page.  Download and installation Feel fre...